在 Gemini 協助下,設計 GKE 資源取得方式

本文說明如何設計具備復原能力的 Google Kubernetes Engine (GKE) 叢集和工作負載排程策略,協助您取得 GPU、TPU 和高效能 CPU 等資源。運用Google Cloud 和 Compute Advisor (預先發布版) 中的 Gemini,您可以避免待處理的 Pod,並提升 AI 工作負載的排程可靠性。

本文適用於管理 GKE 基礎架構的雲端架構師、平台管理員和作業人員,以及想最佳化容量規劃和排程的人員。

GKE 資源取得能力總覽

Kubernetes 排程會根據宣告的資源要求。排程 GPU 或 TPU 等大規模加速器時,如果特定硬體無法使用,嚴格的資源要求可能會導致叢集無法向上擴充。您可以使用下列功能,在 GKE 上最佳化容量可用性:

  • 自動建立節點集區:動態建立多個機器家族的節點集區。
  • 工作負載層級的回退:容許度和節點選取器已設定為接受替代硬體。
  • 地理位置和區域調度:GKE 多可用區和多區域功能。
  • 預留項目管理:先耗用預先購買的容量,再要求隨需資源。

GKE 資源取得的最佳做法

本節提供相關建議,協助您在 GKE 上排定工作負載時,提高容量可用性。這些最佳做法涵蓋多種策略,例如設計彈性硬體需求、設定自動建立節點集區,以及運用地理位置分配來因應資源限制。節點集區自動建立功能會根據 Pod 規格自動管理節點集區。您不必預先定義節點集區,只要在 Pod 資訊清單中指定資源需求,GKE 就會動態建立節點。

您也可以使用 Compute Advisor 探索及採用下列最佳做法。詳情請參閱「使用 Compute Advisor」。

硬體彈性選項

為盡量確保容量可用性,您可以指示 GKE 避免將工作負載繫結至單一靜態機器家族或加速器類型。以下範例說明如何為不同工作負載類別設定彈性節點集區和 Pod 親和性規則。您選擇的具體替代方案取決於應用程式的資源需求:

  • 一般用途 CPU 節點集區:

    • 主要範例:N2 (以 Intel 為基礎的一般用途)。
    • 替代方案範例:N2D (AMD EPYC)、C2 或 C2D (運算最佳化),或 E2 (成本最佳化)。
    • 實作模式:設定 Pod 規格時,請使用節點親和性或容許度,允許跨多個機器家族標籤 (例如 cloud.google.com/machine-family 中的 ["n2", "n2d", "c2d"]) 進行排程。這樣一來,GKE 就能佈建任何有可用容量的集區。
  • GPU 節點集區:

    • 主要範例:A2 系列 (NVIDIA A100 GPU)。
    • 替代方案範例:L4 (通用 AI/ML) 或 T4 (推論)。
    • 實作模式:為不同 GPU 層級設定個別節點集區或 ComputeClass。如果工作負載不需要 A100 專屬功能,當 A2 佈建受限時,請允許 Pod 回退至 L4 或 T4 集區。
  • TPU 節點集區:

    • 主要範例:TPU Ironwood (TPU7x)。
    • 替代方案範例:TPU v6 (Trillium) 或 TPU v5 (v5e 或 v5p)。
    • 實作模式:TPU 配量佈建作業可能會受到高度限制。設計具有架構層級彈性的訓練工作負載 (例如支援可變配量拓撲的 JAX 或 PyTorch 設定),以便在 TPU Ironwood (TPU7x) 容量不足時,部署至 v6 或 v5 配量。

下表摘要列出不同類型工作負載的主要選項和替代硬體:

工作負載類型 主要選取範圍範例 替代方案範例 架構考量
系統或核心工作負載 N2 N2D、C2D、E2 跨越 Intel 和 AMD 硬體集區,自動建立節點集區。
GPU 推論和處理 A2 (A100) L4、T4 彈性鎖定成本較低或可用性較高的 GPU 節點集區。
TPU 模型訓練 TPU Ironwood (TPU7x) TPU v6、TPU v5 (v5e 或 v5p) 針對以切片為基礎的排程,使用彈性拓撲。

實作節點集區自動建立功能和 ComputeClass

如要盡量確保容量可用性,請將節點集區自動建立功能與 ComputeClasses 搭配使用。以下列舉一些最佳做法供您參考。

  • 定義 ComputeClass:建立 ComputeClass 資源,指定機器系列、GPU 類型或佈建模型優先順序清單。GKE 會嘗試使用類別中優先順序最高的可用設定,佈建節點。優先順序備援清單可大幅協助您取得工作負載所需的資源。舉例來說,如要避免 GKE 在偏好的專用加速器無法使用時,改用一般用途機器,請將 whenUnsatisfiable: DoNotScaleUp 設定新增至 ComputeClass 設定。詳情請參閱「使用自訂 ComputeClass 控制自動調度節點屬性」。

  • 在 Pod 規格中參照 ComputeClasses:在工作負載 Pod 規格中,使用 cloud.google.com/compute-class 標籤指定自訂 ComputeClass,而非特定機器系列或 GPU 類型。詳情請參閱「在工作負載中要求 ComputeClass」。

  • 定義多個容許度:如果您未使用 ComputeClass,請在 Pod 規格中使用節點親和性規則,允許一系列機型 (例如 cloud.google.com/machine-family 中的 ["n2", "n2d"])。詳情請參閱設定節點集區自動建立功能

GKE 的地理位置和多區域彈性

如要提高容量可用性,請部署橫跨多個區域的 GKE 叢集,或執行多叢集架構:

  • 多區域叢集:確保節點集區設定為在區域內所有可用區自動擴縮。

  • 多區域叢集聯盟:對於大型非同步工作 (例如離線批次推論或分散式訓練),請部署多叢集協調器 (例如 Kueue 或 Cluster Director),在全球範圍內將工作負載加入佇列,並將其派往有可用容量的區域。

  • 在 Spot VM 上執行的 Pod:新增容許度,並指示 GKE 在不同可用區分配多餘容量,即可在 Spot VM 上執行可中斷的工作負載。

GKE 可取得性的其他最佳做法

除了硬體多樣化,請採用下列 GKE 最佳做法,盡可能提升叢集擴充成功率:

  • 導入 Pod 超量佈建 (容量緩衝區):預先部署低優先順序的「暫停」Pod,保留節點容量。提交高優先順序的 AI 工作負載,但區域容量受限時,Kubernetes 會立即搶占暫停的 Pod,讓容器啟動,不必等待新節點佈建。詳情請參閱「關於容量緩衝區」。
  • 搭配佇列佈建使用彈性啟動:對於大型批次和 AI 模型訓練工作,請搭配佇列佈建使用彈性啟動,這項功能會整合 Kueue 和 Dynamic Workload Scheduler。彈性啟動搭配佈建佇列會以全有全無的原子節點分配方式,避免叢集擴充失敗。詳情請參閱「使用排隊佈建功能,以彈性啟動模式執行大規模工作負載」。
  • 啟用映像檔串流和容器映像檔預先載入功能:對於大型 AI 容器映像檔 (例如超過 10 GB 的 PyTorch 或 TensorFlow 映像檔),請啟用 GKE 映像檔串流功能,或使用次要開機磁碟預先載入映像檔。這項設定可縮短節點暖機時間,讓新佈建的節點在幾秒內開始執行工作負載。詳情請參閱「使用映像檔串流來提取容器映像檔」和「使用次要開機磁碟預先載入資料或容器映像檔」。
  • 將叢集自動調度資源位置政策設為 ANY使用 ANY 位置政策設定節點集區 (特別是 Spot VM 或彈性啟動)。這項設定會指示叢集自動調度器在所有指定區域中搜尋要求的容量。叢集自動配置器會找出容量,並平衡節點數量。詳情請參閱「叢集自動配置器總覽」。
  • 透過 GPU 共用功能提升加速器使用率:對於不需要專屬 GPU 的工作負載,請使用 GPU 分時、多重執行個體 GPU (MIG) 或 NVIDIA MPS,讓多個容器共用單一加速器。這種做法可針對節點集區的有效容量進行最佳化。 詳情請參閱「About GPU sharing strategies in GKE」。

使用 Compute Advisor

Compute Advisor 是 Google Cloud 控制台中的 AI 輔助介面,採用 Gemini 技術,可協助您為 GKE 設計彈性架構。Google Cloud Compute Advisor 會提供近乎即時的彈性啟動 VM 和 Spot VM 可用性指引,並在部署前驗證您的機構政策和資源配額。Compute Advisor 不會為需要隨選資源的工作負載提供可用性指引。

如要在 Google Cloud 控制台中存取 Gemini,請完成下列步驟:

  1. 前往 Google Cloud 控制台的「Overview」(總覽) 頁面。

    前往總覽頁面

  2. 在「運用 Compute Advisor 設計基礎架構」部分,提交提示。Gemini 開始生成回覆。

  3. 如要產生架構建議,請在 Compute Advisor 中執行下列其中一個範例提示。按一下「在 Compute Advisor 中執行提示」按鈕時, Google Cloud 控制台可能需要超過 15 秒才能載入:

    • 一般加速器策略

      用途:使用這個提示分析區域容量信號,並在設計叢集設定時,接收機器類型、可用區和備援排程策略的建議。

      Configure a GKE cluster to improve chances of obtaining scarce GPU or TPU capacity.
      

      在 Compute Advisor 中執行提示

    • 地理位置彈性和備援

      用途:設計多叢集架構或全域工作佇列系統 (例如使用 Kueue) 時,可使用這個提示,根據資源可用性在不同區域間轉移工作負載執行作業。

      Configure multi-region fallbacks and geographic scheduling on GKE to increase GPU availability.
      

      在 Compute Advisor 中執行提示

    • 優先消耗預留項目

      用途:使用這個提示,為 Pod 親和性和自動調度資源規則產生 YAML 設定模式,優先使用預留容量。

      Configure GKE autoscaling rules and Pod specs to prioritize consuming active reservations before scaling into on-demand pools.
      

      在 Compute Advisor 中執行提示

    • ComputeClasses for fallback prioritization

      用途:使用這個提示產生 ComputeClass CustomResourceDefinition 的 YAML 資訊清單,優先採用高效能 GPU,但包含較低階的備援,確保工作負載排程。

      Define a ComputeClass manifest for GKE to prioritize A2 GPU nodes with automatic fallbacks to L4 or T4 GPUs.
      

      在 Compute Advisor 中執行提示

    • 自動建立節點集區以實現多元化

      用途:使用這個提示,為 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.
      

      在 Compute Advisor 中執行提示

後續步驟