全部產品
Search
文件中心

Container Service for Kubernetes:節點即時彈性FAQ

更新時間:Nov 26, 2025

本文介紹使用節點即時彈性功能時可能遇到的常見問題及解決方案。

索引

分類

二級分類

跳轉連結

節點即時彈性的擴縮容行為

已知限制

擴容行為相關

縮容行為相關

自訂的擴縮容行為

通過Pod控制擴縮容行為

如何通過Pod控制節點即時彈性的節點縮容?

通過節點控制擴縮容行為

節點即時彈性組件相關


已知限制

功能限制

  • 不支援極速模式

  • 一個節點池單批擴容節點的個數不可超過180個

  • 目前不支援在叢集維度配置禁止縮容。

    說明

    如需在節點維度實現禁止縮容,請參見如何指定節點不被節點即時彈性縮容?

  • 節點即時彈性暫不支援對搶佔式執行個體庫存的檢查。對於付費類型為搶佔式執行個體且開啟了使用按量執行個體補充搶佔式容量的節點池,可能會出現搶佔式庫存充足時仍然擴容按量執行個體的情況。

無法100%精確預估節點可用資源

由於ECS底層系統會佔用部分資源,因此執行個體可用記憶體會小於執行個體規格定義(請參見購買執行個體後查看記憶體大小,為什麼和購買時的執行個體規格定義不一致?)。受此約束,節點即時彈性組件估算的節點可調度資源可能大於實際節點的可調度資源,無法100%精確預估。您在配置Pod Request時,需關注以下注意事項。

  • 配置Pod Request取值時,資源申請總量需小於執行個體規格定義(包括CPU、記憶體、磁碟等)。建議Request總量不超過節點資源的70%。

  • 節點即時彈性組件在判斷節點的資源是否充足時僅會考慮Kubernetes Pod(Pending Pod和DaemonSet Pod)資源。如果節點上存在非DaemonSet的Static Pod,需預先為此類Pod預留資源。

  • 如果Pod資源申請佔用的確較大(例如超過節點資源70%時),請提前測試並確認Pod是否可調度到同執行個體規格的節點上,保證可行性。

支援有限的可類比資源類型

節點即時彈性組件僅支援有限的可類比資源類型來類比和判斷是否執行擴縮容操作,詳情請參見下文節點即時彈性可類比判斷的資源類型有哪些?

儲存約束問題

節點伸縮組件在決策時無法感知Pod對儲存資源的特定約束,例如指定使用特定可用性區域、特定磁碟類型(如ESSD)的PV等。

如應用依賴此類儲存,請在啟用節點Auto Scaling前配置專用的節點池。通過為節點池預設好可用性區域、執行個體規格、磁碟類型等配置,確保新擴容的節點能滿足儲存掛載要求,以避免Pod因資源不匹配而調度或啟動失敗。

擴容行為相關

節點即時彈性可類比判斷的資源類型有哪些?

已支援根據以下資源類型進行擴縮容行為的類比和判斷。

cpu
memory
ephemeral-storage 
aliyun.com/gpu-mem # 僅支援共用GPU
nvidia.com/gpu

節點即時彈性是否支援根據Pod Request資源在節點池中擴容合適資源的執行個體規格?

已支援。例如,您為開啟Auto Scaling的節點池配置了4 Core 8 GB和12 Core 48 GB的兩種執行個體規格,Pod Request資源為2 Core,當節點即時彈性執行擴容操作時,會優先將Pod調度到4 Core 8 GB的節點上。如果後續4 Core 8 GB升配為8 Core 16 GB,節點即時彈性會自動讓Pod運行在8 Core 16 GB的節點上。

節點池配了多個執行個體規格,節點即時彈性預設如何選擇?

根據節點池配置的執行個體規格,節點即時彈性會定期排除庫存不足的執行個體規格,然後根據執行個體規格的CPU核心數進行排序,逐個檢查是否滿足不可調度的Pod申請的Request資源。一旦有執行個體規格能夠滿足,節點即時彈性會優先選擇這個執行個體規格,不再檢查剩餘的規格。

使用節點即時彈性時,如何即時感知節點池中的執行個體規格庫存變化?

節點即時彈性提供了健康度指標,會定期更新開啟自動調整節點池中的執行個體規格的庫存變化。當執行個體規格的庫存狀態發生變化時,節點即時彈性會發送名稱為InstanceInventoryStatusChanged的Kubernetes Event。您可以訂閱此Event通知,查看節點池庫存健康度,評估當前節點池庫存是否健康,並提前對執行個體規格配置進行分析和調整。詳細資料,請參見查看節點即時彈性健康度

如何最佳化節點池配置,盡量避免庫存不足而導致擴容失敗?

建議參見以下配置建議,擴大執行個體規格可選範圍:

  • 為節點池配置可選的多執行個體規格,或者配置泛化配置。

  • 為節點池配置多個可用性區域。

為什麼節點即時彈性無法彈出節點?

請檢查是否存在如下情境。

  • 配置節點池的執行個體規格庫存不足。

  • 節點池配置的執行個體規格無法滿足Pod的資源申請(Request)。ECS執行個體規格的資源大小是執行個體的售賣規格,實際運行時需考慮以下資源預留。

  • 是否參見啟用節點即時彈性完成了授權操作。

  • 開啟自動調整的節點池中擴容執行個體失敗。

為保證後續擴縮準確性和系統的穩定性,節點即時彈性組件在異常節點處理完成前,不會執行擴縮容操作。

開啟節點即時彈性的節點池如何配置自訂資源?

通過為開啟節點即時彈性的節點池配置如下固定首碼的ECS標籤(Tag),可以讓彈性組件識別到已開啟彈性的節點池中可供給的自訂資源,或者識別到指定的某些資源的精確值。

說明

節點即時彈性組件ACK GOATScaler需為v0.2.18及以上版本。如需升級組件,請參見管理組件

goatscaler.io/node-template/resource/{資源名}:{資源大小}

樣本:

goatscaler.io/node-template/resource/hugepages-1Gi:2Gi

縮容行為相關

為什麼節點即時彈性無法縮容節點?

請檢查是否存在如下幾種情境。

  • 是否已開啟僅縮容空節點,而排查的節點為非空節點。

  • 節點Pod的資源申請(Request)閾值高於設定的縮容閾值。

  • 節點上運行著kube-system命名空間的Pod。

  • 節點上的Pod包含強制的調度策略,導致其他節點無法運行此Pod。

  • 節點上的Pod擁有PodDisruptionBudget,且到達了PodDisruptionBudget的最小值。

  • 如有新增節點,節點即時彈性在10分鐘內,不會對該節點進行縮容操作。

  • 存在離線節點,即無對應節點對象的、運行中的執行個體。節點即時彈性組件自 v0.5.3 版本起支援自動清理功能。在此之前的版本,需手動刪除這些殘留執行個體。

    v0.5.3 版本灰階發布中,請提交工單申請。組件升級操作入口請參見組件

    可在節點池頁面,單擊同步節點池,然後單擊詳情,在節點管理頁簽下查看是否存在處於離線狀態的節點。

什麼類型的Pod可以阻止節點即時彈性移除節點?

當Pod不是由原生Kubernetes Controller建立的Pod(例如非Deployment、ReplicaSet、Job、StatefulSet等對象建立的Pod),或者當節點上的Pod不能被安全地終止或遷移時,節點即時彈性組件可能會阻止移除這個節點。

通過Pod控制擴縮容行為

如何通過Pod控制節點即時彈性的節點縮容?

您可以通過Pod Annotationgoatscaler.io/safe-to-evict指定在節點即時彈性的縮容過程中,Pod是否會阻止節點被縮容。

  • 阻止節點被縮容:為Pod添加Annotation "goatscaler.io/safe-to-evict": "false"

  • 不阻止節點被縮容:為Pod添加Annotation "goatscaler.io/safe-to-evict": "true"

通過節點控制擴縮容行為

節點即時彈性在縮容過程中如何指定需要刪除的節點?

您可以為待移除節點添加goatscaler.io/force-to-delete:true:NoSchedule汙點。添加後,節點即時彈性會直接執行刪除操作,不會檢查Pod狀態和對Pod排水。這可能會導致服務中斷或資料丟失,請謹慎使用。

如何指定節點不被節點即時彈性縮容?

您可以為目標節點配置節點Annotation "goatscaler.io/scale-down-disabled": "true",使其不被節點即時彈性組件縮容。添加Annotation的命令樣本如下。

kubectl annotate node <nodename> goatscaler.io/scale-down-disabled=true

節點即時彈性能否僅縮容空節點?

您可以在節點維度或叢集維度配置是否需要僅縮容空節點。如果您同時在節點維度和叢集維度完成了配置,節點維度優先順序更高。

  • 節點維度:為節點添加Label goatscaler.io/scale-down-only-empty:truegoatscaler.io/scale-down-only-empty:false,分別用於開啟或關閉僅縮容空節點。

  • 叢集維度:在Container Service管理主控台組件管理頁面,定位節點即時彈性組件ACK GOATScaler,按照頁面提示配置ScaleDownOnlyEmptyNodes,取值為true或false,分別用於開啟或關閉僅縮容空節點。

節點即時彈性組件相關

是否有操作會觸發節點即時彈性組件的自動更新?

不會。除系統維護、升級外,ACK不會進行節點即時彈性組件ACK GOATScaler的自動更新。請在Container Service管理主控台組件管理頁面手動升級。

ACK託管叢集已經完成了角色授權,但節點伸縮活動仍然無法正常運行?

可能是叢集kube-system命名空間下保密字典內不存在addon.aliyuncsmanagedautoscalerrole.token而導致的。ACK預設通過WorkRole實現相關能力,請參見下方流程為手動叢集WorkerRole添加AliyunCSManagedAutoScalerRolePolicy的許可權。

  1. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊

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

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

  4. 按照頁面提示,完成KubernetesWorkerRole角色授權和AliyunCSManagedAutoScalerRolePolicy系統策略的授權,入口如下所示。

    image

  5. 手動重啟kube-system命名空間下的Deployment cluster-autoscaler(節點自動調整)或ack-goatscaler(節點即時彈性),以便許可權立即生效。