為 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,取得最新版本。

在 Autopilot Pod 中要求運算級別

如要指示 Autopilot 將 Pod 放置在特定運算類別上,請在 nodeSelector節點親和性規則中指定 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。如果選取 Accelerator,則必須一併指定相容的 GPU。如需操作說明,請參閱「在 Autopilot 中部署 GPU 工作負載」。如果選取 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。如果選取 Accelerator,則必須一併指定相容的 GPU。如需操作說明,請參閱「在 Autopilot 中部署 GPU 工作負載」。 如果選取 Performance,您也可以在節點選取器中選取 Compute Engine 機器系列。如果未指定機器系列,GKE 會根據區域可用性使用 C4 機器系列。如需操作說明,請參閱「以最佳效能執行 CPU 密集型工作負載」。

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

指定資源要求

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

選擇 CPU 架構

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

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

後續步驟