容量緩衝區可讓您主動管理叢集中的備用容量,進而減少 Google Kubernetes Engine (GKE) 工作負載的 Pod 啟動延遲時間。預先預留備用容量,有助於確保節點在需要時有可用容量,減少在資源調度事件期間排定新 Pod 的時間。
本文將說明容量緩衝區的運作方式。如要瞭解如何啟用及使用容量緩衝區,請參閱設定容量緩衝區。
使用容量緩衝區的時機
如果應用程式對啟動延遲很敏感,且需要快速擴充,請使用容量緩衝區。當流量突然增加時,容量緩衝區會提供預先佈建的容量。
容量緩衝區可帶來下列好處:
- 縮短資源調度延遲時間:使用容量緩衝區,讓重要工作負載立即在預先佈建的節點上執行。容量緩衝區有助於消除 VM 啟動和映像檔提取作業的相關延遲,讓您在流量尖峰期間維持嚴格的服務等級目標 (SLO)。
- 經濟實惠的過度佈建:容量緩衝區可協助您維持固定大小的安全網。對於大規模工作負載,這種方法通常比其他過度佈建方法 (例如降低 HorizontalPodAutoscaler (HPA) 使用率目標) 更經濟實惠,因為隨著叢集成長,閒置容量可能會線性增加。
- 符合工作負載需求:您可以完全控管容量緩衝區的大小。選項包括整合自訂 DaemonSet 或資料,以及控管映像檔預先載入和工作負載預先啟動。
對於需要快速擴充的延遲時間敏感型工作負載,例如 AI 推論、銷售活動期間的零售應用程式,或玩家活動高峰期間的遊戲伺服器,建議您使用容量緩衝區。
對於啟動延遲不敏感的工作負載 (例如批次處理工作),我們不建議使用容量緩衝區。對於這些工作負載,過度佈建資源沒有任何好處。
容量緩衝區的運作方式
使用 Kubernetes CapacityBuffer 自訂資源定義備用容量緩衝區,藉此實作容量緩衝區。GKE 叢集自動配置器會監控 CapacityBuffer 資源,並將其視為待處理需求,確保有可用備用容量。如果叢集容量不足,無法滿足緩衝區中定義的資源要求,叢集自動配置器就會佈建額外節點。
當高優先順序工作負載擴大時,GKE 會立即將工作負載排定至緩衝區的可用容量。這項即時排程適用於副本數量或緩衝區中預留的資源量,可避免節點佈建作業通常會有的延遲。工作負載使用緩衝區單元時,叢集自動配置器會佈建新節點,以重新填滿緩衝區。
作用中緩衝區可提供執行中的 VM,以低延遲方式擴充工作負載,但須符合預留容量。由於節點已準備就緒,因此在擴增事件期間,節點可盡可能縮短初始緩衝區耗用作業的延遲時間。
CapacityBuffer CRD
如要設定容量緩衝區,請建立 CapacityBuffer CustomResourceDefinition (CRD)。您可以設定容量緩衝區,以符合不同條件:
- 固定備用資源:指定緩衝區 Pod 的固定數量。這是建立已知大小緩衝區最簡單的方法。
- 百分比:將緩衝區空間定義為現有可擴充工作負載 (例如 Deployment) 的百分比。參考工作負載進行資源調度時,緩衝區空間會動態調整。
- 資源限制:定義緩衝區應保留的 CPU 和記憶體總量。控制器會根據參照的 Pod 範本資源要求,計算要建立的緩衝區 Pod 數量。
詳情請參閱 CapacityBuffer CRD 參考文件。
需求條件和限制
容量緩衝區須符合下列規定和限制:
- 容量緩衝區適用於執行 1.35.2-gke.1842000 以上版本的 GKE 叢集。
- 容量緩衝區僅支援使用節點計費模式的工作負載。容量緩衝區不支援使用以 Pod 為準的計費模式的工作負載。
- 建議您在叢集上啟用自動佈建節點。自動佈建節點功能可讓叢集自動配置器根據 CapacityBuffer 中的資源要求,建立新的節點集區。如未啟用自動佈建節點功能,叢集自動配置器只會擴充現有節點集區。
後續步驟
- 如要瞭解如何實作容量緩衝區,請參閱「設定容量緩衝區」。