工作負載自動擴充

透過自動擴充,您可以透過某種方式自動更新您的工作負載。這可讓您的叢集更彈性且有效率地回應資源需求的變更。

在 Kubernetes 中,您可以根據當前資源需求擴充工作負載。這可讓您的叢集更彈性且有效率地回應資源需求的變更。

當您擴充工作負載時,您可以增加或減少工作負載管理的副本數,或就地調整副本可用的資源。

第一種方法稱為水平擴充,而第二種方法稱為垂直擴充

根據您的使用案例,有手動和自動方式可以擴充您的工作負載。

手動擴充工作負載

Kubernetes 支援工作負載的手動擴充。水平擴充可以使用 kubectl CLI 完成。對於垂直擴充,您需要修補工作負載的資源定義。

請參閱以下兩種策略的範例。

自動擴充工作負載

Kubernetes 也支援工作負載的自動擴充,這是本頁的重點。

Kubernetes 中自動擴充的概念指的是自動更新管理一組 Pod 的物件的能力(例如 Deployment)。

水平擴充工作負載

在 Kubernetes 中,您可以使用 HorizontalPodAutoscaler (HPA) 自動水平擴充工作負載。

它實作為 Kubernetes API 資源和控制器,並定期調整工作負載中的副本數量,以符合觀察到的資源使用率,例如 CPU 或記憶體使用率。

有關於為 Deployment 設定 HorizontalPodAutoscaler 的逐步解說教學

垂直擴充工作負載

功能狀態: Kubernetes v1.25 [stable]

您可以使用 VerticalPodAutoscaler (VPA) 自動垂直擴充工作負載。與 HPA 不同,VPA 不是 Kubernetes 預設隨附的,而是一個獨立專案,可以在 GitHub 上找到。

安裝完成後,它可讓您為工作負載建立 CustomResourceDefinitions (CRD),其定義如何以及何時擴充受管理副本的資源。

目前,VPA 可以在四種不同的模式下運作

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 擴展器允許您定義排程(和時區)以擴展或縮減工作負載的規模。

擴展叢集基礎設施

如果擴展工作負載不足以滿足您的需求,您也可以擴展叢集基礎設施本身。

擴展叢集基礎設施通常意味著新增或移除 節點。請閱讀叢集自動擴展以獲取更多資訊。

下一步

上次修改時間:2024 年 10 月 22 日下午 12:25 PST:In-Place Pod Resize Beta (6c3808ec10)