為 Autopilot Pod 選擇運算級別

本文說明如何選取特定運算類別,在 Google Kubernetes Engine (GKE) Autopilot 叢集中執行具有獨特硬體需求的工作負載。閱讀本文前,請務必先熟悉 GKE Autopilot 中的運算類別概念。

Autopilot 運算級別總覽

Autopilot 提供運算類別,專門用於執行有特定硬體需求的工作負載。這些運算類別適用於機器學習和 AI 工作等工作負載,或執行即時高流量資料庫。

這些運算級別是 Compute Engine 機器系列的子集,除了預設的 Autopilot 一般用途運算級別外,還提供其他彈性。舉例來說,Scale-Out 類別會關閉多執行緒並行功能,讓每個 vCPU 都是一個實體核心。

您可以根據個別 Pod 的需求,將一般 Autopilot Pod 或 Spot Pod 設定為要求由這些運算類別支援的節點。您也可以在支援該架構的運算類別中,要求特定 CPU 架構,例如 Arm

事前準備

開始之前,請確認您已完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。

在 Autopilot Pod 中要求運算級別

如要指示 Autopilot 將 Pod 放置在特定運算類別上,請在 nodeSelectornode 親和性規則中指定 cloud.google.com/compute-class 標籤,如下列範例所示:

nodeSelector

    apiVersion: apps/v1     kind: Deployment     metadata:       name: hello-app     spec:       replicas: 3       selector:         matchLabels:           app: hello-app       template:         metadata:           labels:             app: hello-app         spec:           nodeSelector:             cloud.google.com/compute-class: "COMPUTE_CLASS"           containers:           - name: hello-app             image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0             resources:               requests:                 cpu: "2000m"                 memory: "2Gi"     

根據用途將 COMPUTE_CLASS 換成運算類別名稱,例如 Scale-Out。如果選取 Performance,您也可以在節點選取器中選取 Compute Engine 機器系列。如果未指定機器系列,GKE 會根據區域供應情形使用 C4 機器系列。如需操作說明,請參閱「以最佳效能執行 CPU 密集型工作負載」。

nodeAffinity

    apiVersion: apps/v1     kind: Deployment     metadata:       name: hello-app     spec:       replicas: 3       selector:         matchLabels:           app: hello-app       template:         metadata:           labels:             app: hello-app         spec:           terminationGracePeriodSeconds: 25           containers:           - name: hello-app             image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0             resources:               requests:                 cpu: "2000m"                 memory: "2Gi"                 ephemeral-storage: "1Gi"           affinity:             nodeAffinity:               requiredDuringSchedulingIgnoredDuringExecution:                 nodeSelectorTerms:                 - matchExpressions:                   - key: cloud.google.com/compute-class                     operator: In                     values:                     - "COMPUTE_CLASS"       

根據用途將 COMPUTE_CLASS 替換為運算類別名稱,例如 Scale-Out。如果選取 Performance,您也可以在節點選取器中選取 Compute Engine 機器系列。如果未指定機器系列,GKE 會根據區域可用性使用 C4 機器系列。如需操作說明,請參閱「以最佳效能執行 CPU 密集型工作負載」。

您也可以為 Spot Pod 要求特定運算類別。

指定資源要求

選擇運算類別時,請務必根據所選類別的資源要求下限和上限,為 Pod 指定資源要求。如果要求低於下限,Autopilot 會自動調高要求。不過,如果要求數量超過上限,Autopilot 就不會部署 Pod,並會顯示錯誤訊息。

選擇 CPU 架構

部分運算類別支援多個 CPU 架構。舉例來說,Scale-Out 類別同時支援 Arm 和 x86 架構。如果未要求特定架構,Autopilot 會佈建具有指定運算級別預設架構的節點。如果 Pod 需要使用其他架構,請在節點選取器或節點親和性規則中,連同運算類別要求一併要求該架構。您要求使用的運算類別必須支援您指定的 CPU 架構。

如需操作說明,請參閱「在 Arm 架構上部署 Autopilot Pod」。

後續步驟