Auto Scaling是根據業務需求和策略,經濟地自動調整彈性計算資源的管理服務。本文介紹Auto Scaling的背景資訊和Auto Scaling涉及的組件。
背景介紹
Auto Scaling是ACK被廣泛採用的功能,典型的情境包含線上業務彈性、大規模計算訓練、深度學習GPU或共用GPU的訓練與推理、定時周期性負載變化等。Auto Scaling分為兩個維度:
工作負載伸縮(調度層彈性):主要負責修改工作負載的調度容量變化。例如,HPA是典型的調度層彈性組件,可以調整應用的副本數,調整的副本數會改變當前負載佔用的調度容量,從而實現調度層的伸縮。
節點伸縮(資源層彈性):在叢集的容量規劃不能滿足叢集調度容量時,會擴容節點資源,進行調度容量的補充。
兩層的彈性組件與能力可以分開使用,也可以結合在一起使用,並且兩者之間是通過調度層面的容量狀態進行解耦。
ACKAuto Scaling組件介紹
工作負載伸縮彈性組件
組件名稱 | 組件介紹 | 適用情境 | 使用限制 | 參考文檔 |
HPA | Kubernetes內建群組件,主要面向線上業務。 | 線上業務 | 適用於Deployment、StatefulSet等實現scale介面的對象。 | |
VPA(alpha) | 開源社區組件,主要面向大型單體應用。 | 大型單體應用 | 適用於無法水平擴充的應用,通常是在Pod出現異常恢複時生效。 | |
CronHPA | ACK開源的組件,主要面嚮應用資源使用率存在周期性變化的情境。 | 周期性負載業務 | 適用於Deployment、StatefulSet等,實現了scale介面的對象。此外CronHPA提供了HPA對象的相容能力,您可以同時使用CronHPA與HPA。 | |
UnitedDeployment | ACK組件,主要面向精細化角度情境,例如希望在不同的可用性區域進行負載分布。 | 精細調度情境 | 適用於線上業務精細化控制的情境。例如,一個Deployment的部分應用運行在ECS上,而超出的部分運行在ECI上。 |
節點伸縮彈性組件
組件名稱 | 組件介紹 | 適用情境 | 資源交付速度 | 參考文檔 |
cluster-autoscaler組件 | Kubernetes社區開源組件,節點水平伸縮組件,阿里雲提供了調度、彈性最佳化、成本最佳化的功能。 | 全情境支援,適合線上業務、深度學習、大規模成本算力交付等。 | 以100節點為一個交付批次為例:
| |
虛擬節點群組件 | ACK開源組件,提供無伺服器運行時環境。開發人員無需關心節點資源,只需針對Pod隨用隨付即可。 | 部分情境支援,主要包括線上突增流量、CI/CD、巨量資料作業。 | 以1000個Pod為一個交付批次為例:
| |
即時彈性(GOATScaler) | 即時彈性是一個基於事件驅動的節點伸縮控制器,相容現有的開啟叢集自動Auto Scaling的節點池語義與行為。 | 支援所有類型的應用對其無感開啟及使用。 | 以100節點為一個交付批次為例:
|
Auto Scaling日誌
關於如何配置收集Auto Scaling的日誌,請參見收集系統外掛程式日誌。