IBM Cloud Docs
将应用程序部署到启用了自动缩放的工作程序池

将应用程序部署到启用了自动缩放的工作程序池

要将 pod 部署限制为由集群自动缩放器管理的特定工作程序池,请使用标签与 nodeSelectornodeAffinity 的组合将应用程序仅部署到自动缩放的工作程序池。 通过 nodeAffinity,可以对安排行为的运作方式有更大的控制力,以将 pod 与工作程序节点相匹配。 然后,使用污点和容错,以便只有这些应用程序可以在自动缩放的工作程序池上运行。

更多信息,请参阅以下 Kubernetes 文档:

开始之前

要将 pod 限制为在特定自动缩放的工作程序池上运行,请执行以下操作:

  1. 确保已标记并污染自动缩放工作程序池,如 准备集群以进行自动缩放 中所述。

  2. 在 pod spec 模板中,将 nodeSelectornodeAffinity 与工作程序池中使用的标签相匹配。

    nodeSelector 的示例:

    ...
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
      nodeSelector:
        app: nginx
    ...
    

    nodeAffinity 的示例:

    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: use
                operator: In
                values:
                - autoscale
    
  3. 在 pod 规范模板中,将 toleration 与您在工作程序池上设置的污点相匹配。

    示例 NoExecute 容错:

    tolerations:
      - key: use
        operator: "Exists"
        effect: "NoExecute"
    
  4. 部署 pod。 由于标签匹配,因此 pod 会安排到标记有该标签的工作程序池中的某个工作程序节点上。 由于存在匹配的容错,因此 pod 可以在受感染的工作程序池上运行。

    oc apply -f pod.yaml
    

在工作程序池资源不足之前扩展工作程序节点

正如 “了解集群自动缩放器的工作原理”主题和 Kubernetes 集群自动缩放器常见问题解答中所述,集群自动缩放器会根据工作负载所需的资源和工作池中可用资源的情况,扩大工作池。 但是,您可能希望集群自动缩放器在工作程序池资源不足之前就能扩展工作程序节点。 在这种情况下,工作负载就无需等待供应工作程序节点,因为工作程序池已扩展来满足资源请求。

集群自动缩放器不支持对工作程序池提早缩放(过量供应)。 但是,可以配置其他 Kubernetes 资源来使用集群自动缩放器,从而实现提早缩放。

暂停 Pod

您可以创建一个部署,将 暂停容器部署到具有特定资源请求的容器组中,并为该部署指定较低的容器组优先级。 当优先级较高的工作负载需要这些资源时,会抢占暂停 pod,使其变成暂挂 pod。 此事件会触发集群自动缩放器进行扩展。

有关暂停部署的更多信息,请参阅 Kubernetes 常见问题解答。 您可以使用 此示例超额配置文件创建优先级、服务帐户和部署。

如果使用此方法,请确保了解 pod 优先级的运作方式,以及如何为部署设置 pod 优先级。 例如,如果暂停 pod 没有足够的资源可用于更高优先级的 pod,那么不会抢占该 pod。 优先级较高的工作负载会保持暂挂状态,因此会触发集群自动缩放器进行扩展。 然而,在这种情况下,扩大规模并非过早,因为您想要运行的工作量无法安排,因为资源不足。 暂停 pod 必须具有匹配的 nodeAffinitynodeSelector 以及为工作程序池设置的匹配容差。

水平 pod 自动缩放 (HPA)

因为水平 pod 自动缩放基于的是 pod 的平均 CPU 使用率,所以在工作程序池耗尽资源之前,就会达到您设置的 CPU 使用率限制。

这时会请求更多 pod,从而触发集群自动缩放器扩展工作程序池。 有关设置HPA的更多信息,请参阅 Kubernetes 文档