全部產品
Search
文件中心

Container Service for Kubernetes:Auto Scaling概述

更新時間:Jul 11, 2024

Auto Scaling是根據業務需求和策略,經濟地自動調整彈性計算資源的管理服務。本文介紹Auto Scaling的背景資訊和Auto Scaling涉及的組件。

背景介紹

Auto Scaling是ACK被廣泛採用的功能,典型的情境包含線上業務彈性、大規模計算訓練、深度學習GPU或共用GPU的訓練與推理、定時周期性負載變化等。Auto Scaling分為兩個維度:

  • 工作負載伸縮(調度層彈性):主要負責修改工作負載的調度容量變化。例如,HPA是典型的調度層彈性組件,可以調整應用的副本數,調整的副本數會改變當前負載佔用的調度容量,從而實現調度層的伸縮。

  • 節點伸縮(資源層彈性):在叢集的容量規劃不能滿足叢集調度容量時,會擴容節點資源,進行調度容量的補充。

兩層的彈性組件與能力可以分開使用,也可以結合在一起使用,並且兩者之間是通過調度層面的容量狀態進行解耦。

ACKAuto Scaling組件介紹

Auto Scaling工作負載伸縮彈性組件

組件名稱

組件介紹

適用情境

使用限制

參考文檔

HPA

Kubernetes內建群組件,主要面向線上業務。

線上業務

適用於Deployment、StatefulSet等實現scale介面的對象。

使用容器水平伸縮(HPA)

VPA(alpha)

開源社區組件,主要面向大型單體應用。

大型單體應用

適用於無法水平擴充的應用,通常是在Pod出現異常恢複時生效。

使用容器垂直伸縮(VPA)

CronHPA

ACK開源的組件,主要面嚮應用資源使用率存在周期性變化的情境。

周期性負載業務

適用於Deployment、StatefulSet等,實現了scale介面的對象。此外CronHPA提供了HPA對象的相容能力,您可以同時使用CronHPA與HPA。

使用容器定時水平伸縮(CronHPA)

UnitedDeployment

ACK組件,主要面向精細化角度情境,例如希望在不同的可用性區域進行負載分布。

精細調度情境

適用於線上業務精細化控制的情境。例如,一個Deployment的部分應用運行在ECS上,而超出的部分運行在ECI上。

在ACK上使用UnitedDeployment

節點伸縮彈性組件

組件名稱

組件介紹

適用情境

資源交付速度

參考文檔

cluster-autoscaler組件

Kubernetes社區開源組件,節點水平伸縮組件,阿里雲提供了調度、彈性最佳化、成本最佳化的功能。

全情境支援,適合線上業務、深度學習、大規模成本算力交付等。

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

  • 標準模式:120s

  • 極速模式:60s

  • 標準模式-Qboot鏡像:90s

  • 極速模式-Qboot鏡像:45s

    關於Qboot鏡像的更多資訊,請參見什麼是Alibaba Cloud Linux

啟用節點自動調整

虛擬節點群組件

ACK開源組件,提供無伺服器運行時環境。開發人員無需關心節點資源,只需針對Pod隨用隨付即可。

部分情境支援,主要包括線上突增流量、CI/CD、巨量資料作業。

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

  • 未開啟鏡像緩衝:30s

  • 已開啟鏡像緩衝:15s

即時彈性(GOATScaler)

即時彈性是一個基於事件驅動的節點伸縮控制器,相容現有的開啟叢集自動Auto Scaling的節點池語義與行為。

支援所有類型的應用對其無感開啟及使用。

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

  • ContainerOS:45s

  • 標準模式:103s

  • 極速模式:暫未開啟

啟用節點即時彈性

Auto Scaling日誌

關於如何配置收集Auto Scaling的日誌,請參見收集系統外掛程式日誌