3.4. 配置自动扩展


了解 Red Hat OpenShift Dev Spaces 自动扩展的不同方面。

3.4.1. 为 Red Hat OpenShift Dev Spaces 容器配置副本数

要使用 Kubernetes HorizontalPodAutoscaler (HPA)为 OpenShift Dev Spaces 操作对象配置副本数,您可以为部署定义 HPA 资源。HPA 根据指定指标动态调整副本数量。

流程

  1. 为部署创建 HPA 资源,指定目标指标和所需的副本数。

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: scaler
      namespace: openshift-devspaces
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: <deployment_name> 1
      ...
    1
    & lt;deployment_name > 对应于以下部署:
    • devspaces
    • che-gateway
    • devspaces-dashboard
    • plugin-registry
    • devfile-registry

例 3.14. 为 devspaces 部署创建一个 HorizontalPodAutoscaler

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: devspaces-scaler
  namespace: openshift-devspaces
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: devspaces
  minReplicas: 2
  maxReplicas: 5
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 75

在本例中,HPA 以名为 devspaces 的 Deployment 为目标,至少为 2 个副本,最多 5 个副本并根据 CPU 使用率进行扩展。

3.4.2. 配置机器自动扩展

如果您将集群配置为根据资源需求调整节点数量,则需要额外的配置来维护 OpenShift Dev Spaces 工作区的无缝操作。

当自动扩展添加或删除节点时,工作区需要特殊考虑。

当自动扩展添加新节点时,工作空间启动所需的时间可能比通常要长,直到节点置备完成为止。

相反,当节点被删除时,运行工作区 pod 的节点不应被自动扩展驱除,以避免在使用工作区时造成中断,并可能会丢失任何未保存的数据。

3.4.2.1. 当自动扩展添加新节点时

您需要对 OpenShift Dev Spaces 安装进行额外的配置,以确保在添加新节点时正确工作空间启动。

流程

  1. 在 CheCluster 自定义资源中,将 spec.devEnvironments.startTimeoutSeconds 字段设置为至少 600 秒,以便在工作空间启动过程中需要置备新节点的时间。

    spec:
      devEnvironments:
        startTimeoutSeconds: 600
  2. 在 openshift-devspaces 命名空间中的 DevWorkspaceOperatorConfig 自定义资源中,将 FailedScheduling 事件添加到 config.workpsace.ignoredUnrecoverableEvents 字段中。如果没有足够的节点可用,则工作区启动不会失败。置备新节点时,这允许工作空间启动继续进行。

    config:
      workspace:
        ignoredUnrecoverableEvents:
        - FailedScheduling

3.4.2.2. 当自动扩展删除节点时

要防止工作区 pod 在自动扩展需要删除节点时被驱除,请将 "cluster-autoscaler.kubernetes.io/safe-to-evict": "false" 注解添加到每个工作区 pod。

流程

  1. 在 CheCluster 自定义资源中,在 spec.devEnvironments.workspacesPodAnnotations 字段中添加 cluster-autoscaler.kubernetes.io/safe-to-evict: "false" 注解。

    spec:
      devEnvironments:
        workspacesPodAnnotations:
          cluster-autoscaler.kubernetes.io/safe-to-evict: "false"

验证步骤

  1. 启动工作区,并验证工作区 pod 是否包含 cluster-autoscaler.kubernetes.io/safe-to-evict: "false" 注解。

    $ oc get pod <workspace_pod_name> -o jsonpath='{.metadata.annotations.cluster-autoscaler\.kubernetes\.io/safe-to-evict}'
    false
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.