本文說明如何設計彈性的 Google Kubernetes Engine (GKE) 叢集和工作負載排程策略,協助您取得 GPU、TPU 和高效能 CPU 等資源。運用Cloud de Confiance by S3NS 中的 Gemini 和 Compute Advisor (預先發布版),可避免 Pod 處於待處理狀態,並提高 AI 工作負載排程的可靠性。
本文適用對象為 Cloud 架構師、平台管理員和操作員,他們負責管理 GKE 基礎架構,並希望最佳化容量規劃和排程。
GKE 運算資源的彈性、效率和可用性總覽
Kubernetes 排程會依據宣告的資源要求進行。排定大規模加速器 (例如 GPU 或 TPU) 時,如果無法使用特定硬體,嚴格的資源要求可能會導致叢集無法向上擴充。您可以使用下列功能,在 GKE 最佳化調整容量可用性:
- 自動建立節點集區:動態建立多系列節點集區。
- 工作負載層級備用方案:設定容忍度和節點選取器,接受替代硬體。
- 地理位置和區域調度:GKE 多可用區和多區域功能。
- 預留項目管理:先使用預購容量,再要求隨選資源。
在 GKE 上靈活、有效率且可用地運用運算容量的最佳做法
本節提供建議,協助您在 GKE 排定工作負載時,提高可用容量。這些最佳做法涵蓋多項策略,例如設計彈性的硬體需求、設定節點集區自動建立功能,以及運用地理分布來因應資源限制。自動建立節點集區會根據 Pod 規格自動管理節點集區。您不必預先定義節點集區,只要在 Pod 資訊清單中指定資源需求,GKE 就會動態建立節點。
您也可以使用 Compute Advisor (預先發布版),探索及實作下列最佳做法。詳情請參閱「使用 Compute Advisor」。
提高運算資源可用性的選項
為盡可能提高容量可用性,您可以指示 GKE 避免將工作負載繫結至單一靜態機器家族或加速器類型。以下範例說明如何為不同工作負載類別,設定彈性節點集區和 Pod 親和性規則。具體替代方案取決於應用程式的資源需求:
一般用途 CPU 節點集區:
- 主要範例:N4 (Intel 一般用途)。
- 替代方案範例:N4D (AMD EPYC 一般用途)、C4 或 C3 (Intel 一般用途),或 C4D 或 C3D (AMD EPYC 一般用途)。
- 實作模式:使用自訂 ComputeClass 或節點親和性規則設定 Pod 規格,允許跨多個機器家族標籤進行排程,例如
["n4", "n4d", "c4", "c4d"]中的cloud.google.com/machine-family。這項設定可讓 GKE 佈建任何有可用容量的集區。
GPU 節點集區:
- 主要範例:A3 系列 (NVIDIA H100 GPU) 或 A4 系列 (NVIDIA B200 GPU)。
- 替代方案範例:G2 系列 (NVIDIA L4 GPU) 或其他加速器級別。
- 實作模式:為不同的 GPU 級別設定獨立的節點集區或 ComputeClass。如果推論或服務工作負載可在不同世代的加速器上執行,請允許 Pod 在主要加速器佈建受限時,改用 G2 (L4) 或其他 GPU 集區。
TPU 節點集區:
- 主要範例:TPU Ironwood (TPU7x)。
- 替代方案範例:TPU v6 (Trillium) 或 TPU v5 (v5e 或 v5p)。
- 實作模式:TPU 配量佈建可能受到高度限制。設計訓練工作負載時,請採用架構層級的彈性 (例如支援可變配量拓撲的 JAX 或 PyTorch 設定),以便在 TPU Ironwood (TPU7x) 資源不足時,部署至 v6 或 v5 配量。
下表摘要說明不同類型工作負載的主要選項和硬體替代方案:
| 工作負載類型 | 主要選取範例 | 範例替代方案 | 架構考量 |
|---|---|---|---|
| 系統或核心工作負載 | N4 | N4D、C4、C4D、C3、C3D | 涵蓋新式 Intel 和 AMD 硬體集區,可自動建立節點集區。 |
| GPU 推論和處理 | A3 (H100) 或 A4 (B200) | G2 (L4) | 靈活指定成本較低或可用性較高的 GPU 節點集區。 |
| TPU 模型訓練 | TPU Ironwood (TPU7x) | TPU v6、TPU v5 (v5e 或 v5p) | 採用彈性拓撲,可依據切片排程。 |
實作節點集區自動建立功能和 ComputeClasses
如要盡可能提高可用容量,請將節點集區自動建立功能與 ComputeClasses 搭配使用。以下列出最佳做法:
定義 ComputeClass:建立 ComputeClass 資源,指定機器家族、GPU 類型或佈建模型的優先順序清單。GKE 會嘗試使用類別中優先順序最高的可用設定來佈建節點。排定優先順序的備用清單,可大幅協助您取得工作負載所需的資源。舉例來說,如要避免 GKE 在偏好的專用加速器無法使用時,改用一般用途機器,請在 ComputeClass 設定中新增
whenUnsatisfiable: DoNotScaleUp設定。詳情請參閱「使用自訂 ComputeClass 控制自動調度節點屬性」。為無狀態或可容許中斷的工作負載啟用主動遷移 (
optimizeRulePriority: true):在 ComputeClass 中設定主動遷移,當該位置的容量恢復時,GKE 就會自動封鎖、排空備用節點,並以優先順序較高的機器系列取代。使用動態 StorageClass 進行跨世代備用:在 GKE 1.35.3-gke.1290000 以上版本中,如果 ComputeClass 跨越僅限 Hyperdisk 的系列 (例如 C4、C4D 和 N4) 和永久磁碟系列 (例如 N2 和 N2D),請設定有狀態工作負載,讓 GKE 動態選取相容的磁碟類型。如要這麼做,請使用自動選取磁碟類型 (
parameters.type: dynamic) 的 StorageClass 和volumeBindingMode: WaitForFirstConsumer設定。在 Pod 規格中參照 ComputeClass:在工作負載 Pod 規格中,使用
cloud.google.com/compute-class標籤指定自訂 ComputeClass,而非特定機器家族或 GPU 類型。詳情請參閱「在工作負載中要求 ComputeClass」。定義多個容忍度:如果不使用 ComputeClass,請在 Pod 規格中使用節點親和性規則,允許一系列機器系列 (例如
["n4", "n4d", "c4", "c4d"]中的cloud.google.com/machine-family)。詳情請參閱「設定節點集區自動建立功能」。
在 GKE 彈性選擇地理位置和多區域
如要提高容量可用性,請部署跨多個可用區的 GKE 叢集,或執行多叢集架構:
多可用區叢集:確保節點集區已設定為在區域內的所有可用區自動調度資源。
多區域叢集聯合:針對大型非同步工作 (例如離線批次推論或分散式訓練),部署多叢集自動調度管理工具 (例如 Kueue 或 Cluster Director),在全球範圍內排入工作負載,並調度至有可用容量的區域。
在 Spot VM 上執行的 Pod:新增容忍度,並指示 GKE 在不同可用區分配超額容量,在 Spot VM 上執行可中斷的工作負載。
其他最佳做法,可提升 GKE 運算容量的彈性、效率和可用性
除了硬體多元化,您也可以採用下列 GKE 最佳做法,盡可能提高叢集擴充成功率:
- 使用容量緩衝區:主動預留備用節點容量,以便立即排定高優先順序的 AI 工作負載,不必等待新的節點佈建。您可以搭配使用宣告式容量緩衝區和主動緩衝區策略,為 GPU 和 TPU 工作負載預留備用容量,讓叢集自動配置器自動維護備用容量。
- 搭配使用彈性啟動和佇列式佈建:針對大型批次和 AI 模型訓練工作,請搭配使用彈性啟動和佇列式佈建,這項功能會與 Kueue 和 Dynamic Workload Scheduler 整合。彈性啟動搭配佇列式佈建,採用全有全無的原子節點分配方式,可避免部分叢集擴充失敗。詳情請參閱「透過彈性啟動搭配佇列式佈建執行大規模工作負載」。
- 啟用映像檔串流和容器映像檔預先載入功能:針對大型 AI 容器映像檔 (例如超過 10 GB 的 PyTorch 或 TensorFlow 映像檔),啟用 GKE 映像檔串流功能,或使用次要開機磁碟預先載入映像檔。這項設定可縮短節點預熱時間,讓新佈建的節點在幾秒內開始執行工作負載。詳情請參閱「使用映像檔串流功能提取容器映像檔」和「使用次要開機磁碟預先載入資料或容器映像檔」。
- 將叢集自動配置器位置政策設為
ANY:使用ANY位置政策設定節點集區 (特別是 Spot VM 或彈性啟動)。這項設定會指示叢集自動配置器,在所有指定可用區中搜尋要求的容量。叢集自動配置器會尋找容量,而非平衡節點數量。詳情請參閱「叢集自動配置器總覽」。 - 透過 GPU 共用功能,充分運用加速器:如果工作負載不需要專屬 GPU,請使用 GPU 分時、多實體 GPU (MIG) 或 NVIDIA MPS,讓多個容器共用單一加速器。這種做法可最佳化節點集區的有效容量。詳情請參閱「關於 GKE 中的 GPU 共用策略」。
使用 Compute Advisor
Compute Advisor 是Cloud de Confiance 控制台中的 AI 輔助介面,採用 Gemini 技術,可協助您為 GKE 設計具備韌性且符合成本效益的架構。
Compute Advisor 會提供彈性啟動型 VM 和 Spot VM 的近乎即時可用性指引,並在部署前驗證貴組織的政策和資源配額。Compute Advisor 不會針對需要隨選資源的工作負載,提供可用性指引。
如要在 Cloud de Confiance 控制台存取 Gemini,請完成下列步驟:
-
前往 Cloud de Confiance 控制台的「Overview」(總覽) 頁面。
-
在「運用 Compute Advisor 設計基礎架構」部分,提交提示詞。Gemini 會開始生成回覆。
-
如要生成架構建議,請在 Compute Advisor 執行下列其中一個範例提示。點選「Run prompt in Compute Advisor」(在 Compute Advisor 中執行提示) 按鈕時, Cloud de Confiance 控制台可能需要超過 15 秒才能載入:
一般加速器策略:
用途:使用這則提示分析區域容量信號,並在設計叢集設定時,取得機型、可用區和備用排程策略的建議。
Configure a GKE cluster to improve chances of obtaining scarce GPU or TPU capacity.地理位置彈性和備用方案:
用途:設計多叢集架構或全域工作佇列系統 (例如使用 Kueue) 時,可使用這則提示,根據資源可用性跨區域轉移工作負載執行作業。
Configure multi-region fallbacks and geographic scheduling on GKE to increase GPU availability.優先預留項目消耗:
用途:使用這則提示生成 YAML 設定模式,用於 Pod 親和性和自動調度資源規則,優先使用預留容量。
Configure GKE autoscaling rules and Pod specs to prioritize consuming active reservations before scaling into on-demand pools.ComputeClasses 優先備用機制:
用途:使用這則提示詞,為 ComputeClass CustomResourceDefinition 生成 YAML 資訊清單,優先採用高效能 GPU,但包含較低階的備用選項,確保工作負載排程。
Define a ComputeClass manifest for GKE to prioritize A3 GPU nodes with automatic fallbacks to G2 (L4) GPUs.自動建立節點集區以分散資源:
用途:使用這則提示詞,編寫 GKE 叢集自動配置器資源限制和 Pod 親和性規則的 YAML 資訊清單,讓 NAP 自動佈建替代 GPU 或 CPU 節點。
Configure GKE node pool auto-creation to diversify machine families and prevent pending pods when regional accelerator capacity is constrained.