全部產品
Search
文件中心

Container Service for Kubernetes:為節點池開啟Auto Scaling

更新時間:Jun 26, 2025

當叢集的容量規劃無法滿足應用Pod調度時,您可以使用ACK One註冊叢集提供的Auto Scaling功能,自動擴縮節點資源以進行調度容量的補充。目前提供節點自動調整節點即時彈性兩種彈性方案,後者相較於前者有著更快的彈性速度、更高的交付效率和更低的使用門檻。

前提條件

步驟一:配置RAM許可權

  1. 建立RAM使用者並為其授予以下自訂權限原則。具體操作,請參見使用RAM授予叢集及雲資源存取權限

    展開查看自訂權限原則內容

    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "ess:DescribeScalingGroups",
            "ess:DescribeScalingInstances",
            "ess:DescribeScalingActivities",
            "ess:DescribeScalingConfigurations",
            "ess:DescribeScalingRules",
            "ess:DescribeScheduledTasks",
            "ess:DescribeLifecycleHooks",
            "ess:DescribeNotificationConfigurations",
            "ess:DescribeNotificationTypes",
            "ess:DescribeRegions",
            "ess:CreateScalingRule",
            "ess:ModifyScalingGroup",
            "ess:RemoveInstances",
            "ess:ExecuteScalingRule",
            "ess:ModifyScalingRule",
            "ess:DeleteScalingRule",
            "ecs:DescribeInstanceTypes",
            "ess:DetachInstances",
            "ess:CompleteLifecycleAction",
            "ess:ScaleWithAdjustment",
            "ess:DescribePatternTypes",
            "vpc:DescribeVSwitches",
            "cs:DeleteClusterNodes",
            "cs:DescribeClusterNodes",
            "cs:DescribeClusterNodePools",
            "cs:DescribeClusterNodePoolDetail",
            "cs:DescribeTaskInfo",
            "cs:ScaleClusterNodePool",
            "cs:RemoveNodePoolNodes",
            "ecs:DescribeAvailableResource",
            "ecs:DescribeInstanceTypeFamilies",
            "ecs:DescribeInstances",
            "cs:GetClusterAddonInstance",
            "cs:DescribeClusterDetail",
            "ecs:DescribeCapacityReservations",
            "ecs:DescribeElasticityAssurances",
            "ecs:DescribeImages"
          ],
          "Resource": [
            "*"
          ],
          "Effect": "Allow"
        }
      ]
    }
  2. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  3. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇組態管理 > 保密字典

  4. 保密字典頁面,單擊使用YAML建立資源,填入以下樣本內容,建立一個名稱為alibaba-addon-secret的Secret。

    說明

    組件會通過其中儲存的AccessKeyID和AccessKeySecret訪問雲上服務。若已存在alibaba-addon-secret,則忽略。

    apiVersion: v1
    kind: Secret
    metadata:
      name: alibaba-addon-secret
      namespace: kube-system
    type: Opaque
    stringData:
      access-key-id: <RAM使用者的AccessKeyID>
      access-key-secret: <RAM使用者的AccessKeySecret>

步驟二:配置節點伸縮方案

啟用節點自動調整

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  3. 節點池頁面,單擊節點伸縮後方的去配置

    1.jpg

  4. 首次使用節點自動調整功能時,請按照頁面提示開通ESS服務。

  5. 節點伸縮配置頁面,選擇節點伸縮方案自動調整,配置伸縮的配置項,然後單擊確定

    節點伸縮方案選擇後支援切換。如需切換,您可以在此處變更為節點即時彈性,仔細閱讀頁面提示並按照頁面指引完成操作。

    配置

    說明

    節點池擴容順序策略

    • 隨機策略:存在多個可擴容節點池時,從中任意選擇一個節點池進行擴容。

    • 預設策略:存在多個可擴容節點池時,從中選擇一個資源浪費最少的節點池進行擴容。

    • 優先順序策略:存在多個可擴容節點池時,選擇優先順序高的節點池進行擴容。

      節點池優先順序通過節點池擴容優先順序參數定義。

    節點池擴容優先順序

    設定節點池的擴容優先順序。僅當節點池擴容順序策略選擇為優先順序策略時生效。

    取值範圍:1~100的整數,數字越大,優先順序越高。

    您需要在參數右側單擊添加,選擇已開啟了自動彈性的節點池,並為其設定優先權。

    若無已開啟自動彈性的節點池可選擇,您可以暫時忽略該參數,待步驟二:配置開啟彈性的節點池執行後再重新設定節點池優先順序。

    彈性靈敏度

    用於調整系統判斷伸縮的間隔時間。預設值為60s。

    實施Auto Scaling時,彈性組件會基於調度情況自動觸發擴容。

    重要
    • ECS節點:僅當同時滿足縮容閾值縮容觸發時延靜默時間三個條件時,彈性組件才有可能執行節點縮容。

    • GPU節點:僅當同時滿足GPU 縮容閾值縮容觸發時延靜默時間三個條件時,彈性組件才有可能執行GPU節點縮容。

    允許縮容

    是否允許進行節點縮容。關閉時,縮容相關配置不生效。請謹慎設定。

    縮容閾值

    啟用節點自動調整的節點池中,單個節點的請求資源(Request)與單個節點資源容量的比值。

    僅當該比值低於配置的閾值時,即節點的CPU和記憶體資源使用率均低於縮容閾值時,節點才有可能被縮容。

    GPU 縮容閾值

    GPU執行個體的縮容閾值。

    僅當該比值低於配置的閾值時,即節點的CPU、記憶體和GPU資源使用率均低於GPU 縮容閾值時,GPU節點才有可能被縮容。

    縮容觸發時延

    從檢測到有縮容需求到實際執行縮容操作之間的時間間隔。單位:分鐘。預設值:10分鐘。

    重要

    僅當滿足縮容閾值配置,且達到縮容觸發時延後,彈性組件才有可能執行節點縮容。

    靜默時間

    距離最近一次擴容完成後,彈性組件不執行縮容的時間間隔。

    在靜默時間內,彈性組件不會縮容節點,但仍會判斷節點是否可以縮容;超過靜默時間後,如果節點滿足縮容閾值和縮容觸發時延兩個條件,彈性組件則會正常執行縮容。例如,當靜默時間為10分鐘,縮容觸發時延為5分鐘時,彈性組件在最近一次擴容後的10分鐘內不會縮容節點,但會在靜默的10分鐘內判斷節點是否符合縮容條件。等待靜默時間結束,節點達到縮容閾值且時間超過縮容觸發時延規定的5分鐘時,彈性組件會繼續執行縮容。

    查看進階配置的配置項說明

    配置項

    說明

    Pod 終止逾時時間

    縮容節點時等待節點上Pod終止的最長時間。單位:秒。

    Pod 最小副本數

    節點縮容前每個ReplicaSet中允許的Pod最小數量。當Pod所屬ReplicaSet的實際副本數小於此參數時,節點不會被縮容。

    開啟 Daemonset Pod 排水

    開啟DaemonSet Pod排水後,節點縮容時會驅逐節點上的DaemonSet Pod。

    跳過有 kube-system 命名空間下 Pod 所在節點

    開啟後,當叢集執行節點自動縮容操作時,可以忽略運行在kube-system命名空間下的Pod所在的節點,確保這些節點不受縮容的影響。

    說明

    此功能對DaemonSet Pod和Mirror Pod不生效。

啟用節點即時彈性

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  3. 節點池頁面,單擊節點伸縮後方的去配置

    1.jpg

  4. 首次使用叢集自動Auto Scaling功能時,請按照頁面提示開通ESS服務。

  5. 節點伸縮配置頁面,選擇節點伸縮方案即時彈性,配置伸縮配置項,然後單擊確定

    實施Auto Scaling時,彈性組件會基於調度情況自動觸發擴容。

    節點伸縮方案選擇後支援切換。如需切換,您可以在此處變更為節點自動調整,仔細閱讀頁面提示並按照頁面指引完成操作。本功能白名單開放中,如需使用,請提交工單

    配置項

    說明

    縮容閾值

    啟用節點自動調整的節點池中,單個節點的請求資源(Request)與單個節點資源容量的比值。

    僅當該比值低於配置的閾值時,即節點的CPU和記憶體資源使用率均低於縮容閾值時,節點才有可能被縮容。

    GPU 縮容閾值

    GPU執行個體的縮容閾值。

    僅當該比值低於配置的閾值時,即節點的CPU、記憶體和GPU資源使用率均低於GPU 縮容閾值時,GPU節點才有可能被縮容。

    縮容觸發時延

    從檢測到有縮容需求到實際執行縮容操作之間的時間間隔。單位:分鐘。預設值:10分鐘。

    重要

    僅當滿足縮容閾值配置,且達到縮容觸發時延後,彈性組件才有可能執行節點縮容。

    查看進階配置的配置項說明

    配置項

    說明

    Pod 終止逾時時間

    縮容節點時等待節點上Pod終止的最長時間。單位:秒。

    Pod 最小副本數

    節點縮容前每個ReplicaSet中允許的Pod最小數量。當Pod所屬ReplicaSet的實際副本數小於此參數時,節點不會被縮容。

    開啟 Daemonset Pod 排水

    開啟DaemonSet Pod排水後,節點縮容時會驅逐節點上的DaemonSet Pod。

    跳過有 kube-system 命名空間下 Pod 所在節點

    開啟後,當叢集執行節點自動縮容操作時,可以忽略運行在kube-system命名空間下的Pod所在的節點,確保這些節點不受縮容的影響。

    說明

    此功能對DaemonSet Pod和Mirror Pod不生效。

步驟三:配置開啟彈性的節點池

您可以配置已有節點池,將節點池擴縮容模式修改為自動,也可以參見建立與管理節點池建立開啟自動彈性的節點池。主要配置如下:

配置

說明

擴縮容模式

支援手動擴容和自動擴容兩種擴容方式,根據業務需求和策略自動調整計算資源,節省叢集成本。

  • 手動:ACK會根據配置的期望節點數調整節點池中的節點數,將節點數始終維持在期望節點數。更多資訊,請參見手動擴縮容節點池

  • 自動:當叢集的容量規劃無法滿足應用Pod調度時,ACK會根據配置的最小和最大執行個體數自動擴縮節點資源。1.24及以上版本的叢集預設啟用節點即時彈性;1.24以下版本的叢集預設啟用節點自動調整。更多資訊,請參見節點伸縮

執行個體數量

節點池中可伸縮的最小執行個體數最大執行個體數,不包含您已有的執行個體。

說明
  • 最小執行個體數不為0時,伸縮組生效後,將自動建立對應數量的ECS執行個體。

  • 建議設定的最大執行個體數不要小於當前節點池中的節點數,否則Auto Scaling功能生效後會直接導致節點池的節點縮容。

執行個體相關的配置項

根據執行個體規格或屬性選擇Worker節點池使用的ECS執行個體,可通過vCPU、記憶體、規格類型系列、架構等屬性篩選所需的執行個體規格類型系列。您可以參見ECS執行個體規格配置建議瞭解ACK不支援的執行個體規格並擷取節點的配置建議。

節點池擴容時,將從選中的執行個體規格中擴容。具體擴容到的執行個體規格取決於節點池擴縮容策略。選擇的執行個體規格越多,節點池成功彈出節點的機率越大。

節點池內執行個體的規格。單一規格的ECS執行個體庫存容量波動較大,建議配置多種相同規格的執行個體類型,以提高節點伸縮成功率。

作業系統

在開啟自動調整時,支援選擇Alibaba Cloud Linux、Windows鏡像、Windows Core鏡像。

當所選鏡像是Windows鏡像或Windows Core鏡像時,系統將自動設定汙點(Taints){ effect: 'NoSchedule', key: 'os', value: 'windows' }

節點標籤(Labels)

在叢集中添加節點標籤(Label)後,會自動添加到Auto Scaling擴容出的節點上。

重要

當節點標籤和汙點配置映射到節點池Tag後,自動調整才可識別,且節點池Tag存在數量上限。因此,請將開啟自動調整的節點池配置的ECS標籤、汙點和節點標籤的總數控制在12個之內。

擴縮容策略

  • 優先順序策略:根據叢集配置的虛擬交換器的優先順序進行擴縮容(選擇的虛擬交換器的順序,由上到下優先順序遞減)。當優先順序較高的虛擬交換器所在可用性區域無法建立ECS執行個體時,自動使用下一優先順序的虛擬交換器建立ECS執行個體。

  • 成本最佳化策略:按vCPU單價從低到高嘗試建立執行個體。

    當節點池付費類型搶佔式執行個體時,將優先建立搶佔式計費執行個體。支援同時配置按量執行個體所佔比例(%),當搶佔式計費執行個體規格因庫存等原因無法建立時,自動使用隨用隨付執行個體來補充。

  • 均衡分布策略:只有設定多個專用網路交換器時,均衡分布策略才會生效。在伸縮組指定的多可用性區域(即指定多個專用網路交換器)之間均勻分配ECS執行個體。如果由於庫存不足等原因造成可用性區域之間不平衡,您可以再次進行均衡操作,以平衡資源的可用性區域分布。

使用按量執行個體補充搶佔式容量

需同時選擇付費類型為搶佔式執行個體。

開啟後,如果因價格或庫存等原因無法建立足夠的搶佔式執行個體,ACK將自動嘗試建立按量執行個體,以滿足ECS執行個體數量要求。

開啟搶佔式執行個體補償

開啟搶佔式執行個體補償

需同時選擇付費類型為搶佔式執行個體。

開啟後,當收到搶佔式執行個體將被回收的系統訊息時(即搶佔式執行個體被回收前5分鐘),ACK將嘗試擴容新的執行個體進行補償。

如果補償成功,ACK將對舊節點執行排水並從叢集中移除;如果補償失敗,ACK將不會對舊節點執行排水。搶佔式執行個體的主動釋放可能導致業務異常。補償失敗後,當庫存恢複或滿足價格條件時,ACK將自動購買執行個體以保證期望節點數。詳情請參見搶佔式執行個體節點池最佳實務

為提高補償成功率,建議同時開啟使用按量執行個體補充搶佔式容量

伸縮模式

需開啟節點池自動調整擴縮容模式自動
  • 標準模式:通過建立、釋放ECS執行個體的方式進行伸縮。

  • 極速模式:通過建立、停機、再啟動ECS執行個體的方式進行伸縮,以便在需要再次伸縮時,直接重新啟動處於停機狀態的執行個體,提高伸縮速度。

    ECS執行個體停機時不收取計算資源費用,只收取儲存費用(包含本機存放區能力的執行個體規格類型系列除外,例如巨量資料型、本地SSD型等)。關於ECS執行個體停機模式的計費詳情及相關注意事項,請參見節省停機模式

汙點 (Taints)

添加汙點後,叢集將不會將Pod調度到該節點上。

步驟四:(可選)結果驗證

完成如上操作後,您便可以使用節點自動調整功能。此時,節點池將顯示已開始自動調整且叢集已自動安裝cluster-autoscaler組件

節點池已開啟自動調整

節點池頁面,節點池列表中將展示已開啟自動調整的節點池。

image

已安裝cluster-autoscaler組件

  1. 在叢集管理頁左側導覽列,選擇工作負載 > 無狀態

  2. 選擇kube-system命名空間,顯示cluster-autoscaler組件

    image