全部產品
Search
文件中心

Container Service for Kubernetes:Auto Scaling概述

更新時間:Jan 23, 2025

如果您業務的資源需求不易預測或有周期性變化(例如Web應用、遊戲服務、線上教育等),推薦您在叢集中啟用Auto Scaling。根據負載需求情況,工作負載伸縮支援自動調整應用Pod的副本數量或資源配置,計算資源伸縮支援自動調整節點資源,從而平穩應對流量峰值並降低成本。

使用前說明

  • 本文面向叢集營運人員、開發人員等介紹ACK叢集的Auto Scaling方案(工作負載伸縮節點伸縮)。建議您已瞭解社區工作負載伸縮方案(例如HPAVPA等)和節點伸縮方案(例如Cluster Autoscaling)的相關內容等。

  • 如果您的叢集為大規模叢集(通常為超過500個節點或者10,000個Pod的叢集),請參見規劃叢集資源彈性速率瞭解相關使用建議,以確保叢集和控制面的穩定性。

工作負載伸縮和計算資源伸縮

ACK的Auto Scaling提供以下兩種維度方案。

  • 工作負載伸縮:調度層彈性方案,作用於Pod,通過增減Pod副本數量或調整Pod資源配置來適應負載變化。例如,HPA支援根據工作負載流量自動調整工作負載Pod的副本數,調整的副本數會改變當前負載佔用的調度容量,從而實現調度層的伸縮。

  • 計算資源伸縮:資源層彈性方案,包括節點伸縮方案和虛擬節點方案,支援根據Pod的調度情況和資源使用方式動態地添加或移除計算資源。

推薦您將兩種方案搭配使用,既能通過調整工作負載Pod副本數來提高資源使用率,又能在叢集維度通過調整計算資源容量來保證Pod總能獲得足夠的計算資源。

工作負載伸縮方案

Kubernetes支援使用kubectl scale命令手動調整工作負載Pod的數量,但需要營運人員自行判斷,僅適用於臨時性的副本數管理。您可以參見下表選擇方案,享受ACK工作負載伸縮方案在成本控制、穩定性保障和資源容量靈活管理等維度提供的支援。

方案

介紹

擴縮依據的指標

使用情境

相關文檔

HPA

在業務負載上升時快速擴容Pod副本來緩解壓力,在業務負載變小時適當縮容以節省資源,是最常執行的 App彈性方案。

  • 資源指標(CPU、記憶體使用量率)

  • 其他自訂指標

服務波動較大、服務數量多且需要頻繁擴縮容的線上業務情境,例如電商服務、線上教育、金融服務等。

使用容器水平伸縮(HPA)

CronHPA

類似Crontab的策略,定時對Pod進行擴縮容,可配置時區、執行的日期、跳過執行的日期(例如節假日),支援和HPA協同使用。

定時擴縮容

業務流量有明顯高峰時段、應用程式需要在特定時間執行任務等情境。

VPA

監控Pod的資源消耗模式,靈活推薦CPU和記憶體資源分派的配置,並在適當的情況下自動進行調整,而不調整Pod的副本數量。

推薦並自動調整Pod中容器的CPU及記憶體的Request和Limit

需要穩定資源配置的有狀態應用的擴容、大型單體應用等情境,通常是在Pod出現異常恢複時生效。

使用容器垂直伸縮(VPA)

KEDA

支援豐富的事件來源,為工作負載提供事件驅動的自動調整能力。

事件數目量,例如隊列長度

需要即時彈性的情境,尤其是基於事件來源的離線作業情境,例如音視頻離線轉碼、事件驅動作業、流式資料處理等。

使用事件驅動伸縮(KEDA)

AHPA

根據業務歷史指標,自動、主動識別彈性周期並對容量進行預測,提前進行彈性規劃,解決彈性滯後的問題。

  • 資源指標(CPU、記憶體、GPU使用率)

  • 流量指標(QPS、RT)

  • 其他自訂指標

業務流量有明顯周期性的情境,例如直播、線上教育、遊戲服務等。

Auto Scaling預測(AHPA)

此外,您也可以使用UnitedDeployment來定義工作負載。UnitedDeployment通過彈性單元Subset來靈活、便捷地管理多個同質的工作負載,動態分配在各Subset上的工作負載副本數量。您可以將UnitedDeployment和上述工作負載伸縮方案搭配使用,實現工作負載的靈活擴縮容與調度,例如多種計算資源混合使用情境。更多資訊,請參見基於UnitedDeployment實現工作負載的伸縮

計算資源伸縮方案

在業務量波動大、需要快速響應的情境下,叢集需要一種能夠根據工作負載變化情況自動調整計算資源的方案,以在提高系統彈性的同時降低營運成本。計算伸縮方案提供的組件會監聽Pod是否處於調度失敗的狀態,以判斷是否需要新增ECS節點或ECI Pod資源。

您可以參見節點伸縮瞭解節點伸縮的功能原理。

重要

下表提供的資源交付資料僅為理論值(參考值),實際資料以您的作業環境為準。

方案

介紹

使用情境

資源交付速度

相關文檔

節點自動調整

當叢集的容量規劃無法滿足應用Pod調度時,自動調整節點的數量。

全情境通用,面向線上業務、深度學習等情境,適用於擴容規模較小(例如開啟彈性的節點池數量少於20,或對應節點池中的節點數量少於100),工作負載批次較為穩定,以單次伸縮為主等業務情境。

以100節點為一個交付批次為例:

啟用節點自動調整

節點即時彈性

節點自動調整的基礎上,節點即時彈性在伸縮速度和效率、資源交付確定性等方面更具優勢,還支援根據ECS執行個體的庫存查看健康度。

全情境通用, 叢集規模較大(例如彈性節點池中節點數大於100,或彈性節點池數大於20)、對資源交付速度有更高要求、期望靈活實現多執行個體規格和跨可用性區域自動調整、對進階調度策略(例如TopologySpread Constraints)有需求。

以100節點為一個交付批次為例:

虛擬節點

無需節點營運和容量規劃,支援單叢集超大Pod容量(最多可支援50000個Pod),突發業務流量情境下能夠擴容工作負載Pod,實現每分鐘10000 Pod彈效能力。

全情境通用,尤其適用於任務和定時任務、資料計算、AI、突發業務等情境。

以1000個Pod作為一個交付批次為例:

通過虛擬節點將Pod調度到ECI上運行

計費說明

Auto Scaling功能本身不收費,但Auto Scaling組件會佔用Pod資源(節點伸縮的情況下需要至少保留一個節點)。節點伸縮方案下,擴容節點資源產生的計費會正常收取。更多資訊,請參見計費概述

常見問題

如您在使用Auto Scaling功能時遇到問題,可參見Auto ScalingFAQ進行排查。

相關文檔