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