工作負載自動擴充
在 Kubernetes 中,您可以根據當前資源需求擴充工作負載。這可讓您的叢集更彈性且有效率地回應資源需求的變更。
當您擴充工作負載時,您可以增加或減少工作負載管理的副本數,或就地調整副本可用的資源。
第一種方法稱為水平擴充,而第二種方法稱為垂直擴充。
根據您的使用案例,有手動和自動方式可以擴充您的工作負載。
手動擴充工作負載
Kubernetes 支援工作負載的手動擴充。水平擴充可以使用 kubectl
CLI 完成。對於垂直擴充,您需要修補工作負載的資源定義。
請參閱以下兩種策略的範例。
- 水平擴充:執行應用程式的多個執行個體
- 垂直擴充:調整指派給容器的 CPU 和記憶體資源大小
自動擴充工作負載
Kubernetes 也支援工作負載的自動擴充,這是本頁的重點。
Kubernetes 中自動擴充的概念指的是自動更新管理一組 Pod 的物件的能力(例如 Deployment)。
水平擴充工作負載
在 Kubernetes 中,您可以使用 HorizontalPodAutoscaler (HPA) 自動水平擴充工作負載。
它實作為 Kubernetes API 資源和控制器,並定期調整工作負載中的副本數量,以符合觀察到的資源使用率,例如 CPU 或記憶體使用率。
有關於為 Deployment 設定 HorizontalPodAutoscaler 的逐步解說教學。
垂直擴充工作負載
Kubernetes v1.25 [stable]
您可以使用 VerticalPodAutoscaler (VPA) 自動垂直擴充工作負載。與 HPA 不同,VPA 不是 Kubernetes 預設隨附的,而是一個獨立專案,可以在 GitHub 上找到。
安裝完成後,它可讓您為工作負載建立 CustomResourceDefinitions (CRD),其定義如何以及何時擴充受管理副本的資源。
注意
您需要將 Metrics Server 安裝到您的叢集,HPA 才能運作。目前,VPA 可以在四種不同的模式下運作
模式 | 描述 |
---|---|
自動 | 目前,Recreate 未來可能會變更為就地更新 |
重建 | VPA 在 Pod 建立時指派資源請求,並在現有 Pod 上更新資源請求,方法是在請求的資源與新建議顯著不同時驅逐它們 |
初始 | VPA 僅在 Pod 建立時指派資源請求,之後永遠不會變更它們。 |
關閉 | VPA 不會自動變更 Pod 的資源需求。建議會被計算出來,並且可以在 VPA 物件中檢查。 |
就地調整大小的需求
Kubernetes v1.27 [alpha]
(預設為啟用:false)原地調整工作負載大小而無需重新啟動 Pod 或其 容器,需要 Kubernetes 1.27 或更新版本。此外,需要啟用 InPlaceVerticalScaling
功能閘道。
InPlacePodVerticalScaling
:啟用 Pod 原地垂直擴展。
基於叢集大小的自動調整
對於需要根據叢集大小調整規模的工作負載(例如 cluster-dns
或其他系統組件),您可以使用 叢集比例自動調整器。就像 VPA 一樣,它不是 Kubernetes 核心的一部分,而是作為其在 GitHub 上的獨立專案託管。
叢集比例自動調整器會監控可調度的 節點 和核心數量,並相應地調整目標工作負載的副本數量。
如果副本數量應保持不變,您可以根據叢集大小,使用 叢集比例垂直自動調整器 來垂直調整工作負載的規模。該專案目前處於 Beta 測試階段,可以在 GitHub 上找到。
雖然叢集比例自動調整器調整工作負載的副本數量,但叢集比例垂直自動調整器會根據叢集中節點和/或核心的數量來調整工作負載(例如 Deployment 或 DaemonSet)的資源請求。
事件驅動的自動調整
也可以根據事件來調整工作負載的規模,例如使用 Kubernetes 事件驅動自動調整器 (KEDA)。
KEDA 是 CNCF 畢業專案,讓您可以根據要處理的事件數量(例如佇列中的訊息量)來調整工作負載的規模。有各種不同事件來源的轉接器可供選擇。
基於排程的自動調整
調整工作負載規模的另一種策略是排程擴展操作,例如為了在離峰時段減少資源消耗。
與事件驅動的自動調整類似,這種行為可以使用 KEDA 及其 Cron
擴展器 來實現。Cron
擴展器允許您定義排程(和時區)以擴展或縮減工作負載的規模。
擴展叢集基礎設施
如果擴展工作負載不足以滿足您的需求,您也可以擴展叢集基礎設施本身。
擴展叢集基礎設施通常意味著新增或移除 節點。請閱讀叢集自動擴展以獲取更多資訊。
下一步
- 了解更多關於水平擴展的資訊
- 原地調整容器資源大小
- 自動擴充叢集中的 DNS 服務
- 了解關於叢集自動擴展的資訊