為 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 放置在特定運算類別上,請在 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」。

後續步驟