選擇機器系列,提升 Autopilot Pod 效能

本文說明如何將工作負載放在特定 Compute Engine 機器系列,在 Google Kubernetes Engine (GKE) Autopilot 叢集發揮最佳工作負載效能。

請確認您熟悉下列事項:

機器系列選取功能的運作方式

您可以在 Pod 規格中新增 cloud.google.com/machine-family 節點選取器,讓 Autopilot 為該 Pod 分配特定 Compute Engine 硬體。舉例來說,如果 Pod 需要更多 CPU 運算能力,可以選擇 C3 機器系列;如果 Pod 需要更多記憶體,則可選擇 N1 機器系列。為以最佳方式執行工作負載,Autopilot 會從您選取的機器系列中,佈建其中一種預先定義機型。

除了最佳 Pod 效能外,選擇特定機器系列還能享有下列優點:

  • 有效率地使用節點:根據預設,Autopilot 會將要求相同機器系列的 Pod 盡可能排程至各個節點,藉此最佳化節點資源用量。這種做法可最佳化節點上的資源用量,進而提高性價比。如果工作負載需要存取節點上的所有資源,您可以視需要設定工作負載,為每個節點要求一個 Pod。

  • 可高載的工作負載:您可以將資源限制設為高於要求,讓 Pod 高載至節點上未使用的資源容量。詳情請參閱「在 GKE 中設定 Pod 爆量」。

為每個 Pod 規劃專屬節點

如果您的工作負載需要大量 CPU 資源,且必須可靠地存取所有節點資源,您可以視需要設定 Pod,讓 Autopilot 將要求機器系列的 Pod 放在專屬節點上。

執行大規模、CPU 密集的工作負載時,例如 AI/機器學習訓練工作負載或高效能運算 (HPC) 批次工作負載,建議為每個 Pod 使用專屬節點。

選擇多 Pod 和單一 Pod 排程

請按照下列指引,根據需求選擇 Pod 排程行為:

定價

系統會依據 Compute Engine 定價,向您收取基礎 VM 和任何附加硬體的費用,以及 Autopilot 節點管理和擴充功能的溢價。詳情請參閱 GKE 定價。

事前準備

開始之前,請確認您已執行下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
  • 確認您有現有的 Autopilot 叢集,且執行 1.30.1-gke.1396000 以上版本。如要建立叢集,請參閱「建立 Autopilot 叢集」。

選取機器系列

本節說明如何在 Pod 中選取特定 Compute Engine 機器系列。

  1. 將下列資訊清單儲存為 machine-series-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: machine-series-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: MACHINE_SERIES
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 5
            memory: "25Gi"
          limits:
            cpu: 20
            memory: 100Gi
    

    將 MACHINE_SERIES 替換為 Pod 的 Compute Engine 機器系列,例如 c3。如需支援的值,請參閱本頁面的「支援的機器系列」。

  2. 部署 Pod:

    kubectl apply -f machine-series-pod.yaml
    

這份資訊清單可讓 Autopilot 最佳化節點資源用量,方法是有效率地將選取相同機器系列的其他 Pod 排程至相同節點 (如有可用容量)。

使用本機 SSD

如果指定提供本機 SSD 的機器系列,則選取機器系列的 Pod 可以使用本機 SSD 做為臨時儲存空間。Autopilot 為 Pod 選擇 Compute Engine 機型時,會考量臨時儲存空間要求。

詳情請參閱「搭配使用本機 SSD 支援的臨時儲存空間與 Autopilot 叢集」。

為 Pod 要求專用節點

如果 Pod 有特定效能需求,例如需要可靠地存取節點的所有資源,您可以指定 cloud.google.com/compute-class: Performance 節點選取器和機器系列節點選取器,為每個 Pod 要求專屬節點。這會指示 Autopilot 將 Pod 放在使用指定機器系列的新節點上,並專門用於該 Pod。這個節點選取器也會防止 Autopilot 在該節點上排定其他 Pod。

  1. 將下列資訊清單儲存為 dedicated-node-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: dedicated-node-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: MACHINE_SERIES
        cloud.google.com/compute-class: Performance
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 12
            memory: "50Gi"
            ephemeral: "200Gi"
    

    將 MACHINE_SERIES 替換為支援的機器系列,該系列也支援每個節點一個 Pod 的排程。如果指定的機器系列不支援每個節點一個 Pod 的排程,部署作業就會失敗並顯示錯誤。

  2. 部署 Pod:

    kubectl apply -f dedicated-node-pod.yaml
    

部署這個資訊清單時,Autopilot 會執行下列操作:

  • 確保部署的 Pod 至少要求效能最佳化節點的最低資源。
  • 計算已部署 Pod 和叢集中任何 DaemonSet 的資源要求總量。
  • 佈建由所選機器系列支援的節點。
  • 結合節點選取器和容許條件,修改 Pod 資訊清單,確保 Pod 在自己的節點上運作。

支援的機器系列

machine-family 選取器支援下列機器系列:

如果您在選取效能級別時未指定機器系列,且區域中有 C4 機器類型,GKE 就會使用 C4 機器系列。

如要比較這些機器系列及其用途,請參閱 Compute Engine 說明文件中的「機器系列比較」。

限制

  • 預先定義的 Performance ComputeClass 不支援裸機機型,例如 c3-standard-192-metal、c4a-standard-72-metal 和 c4d-standard-384-metal。如要搭配 Autopilot 或節點集區自動建立功能使用這些機型,請在自訂 ComputeClass 中指定確切機型。

版本需求

請參閱下列特定機器系列的版本需求:

  • C4N:GKE 1.36.0-gke.3009002 以上版本
  • C4D:GKE 1.32.9-gke.1711000 以上版本
  • N4D:
    • GKE 1.33.13-gke.1079000 以上版本
    • GKE 1.34.1-gke.2037000 以上版本
  • C3 和 C4A 裸機類型:GKE 1.35.3-gke.1389000 以上版本 (使用自訂 ComputeClass)。
  • C4D 裸機類型:GKE 1.37.0-gke.4713000 以上版本 (使用自訂 ComputeClass)。
  • Z4D:GKE 1.36.3-gke.1244000 以上版本。

與其他 GKE 功能的相容性

選取機器系列的 Pod 可以使用該機器系列支援的 GKE 功能和特色,例如:

Spot Pod 和延長執行時間 Pod 互斥。 即使專用 Pod 採用工作負載區隔,GKE 也不會強制要求每個節點的最低資源要求。

GKE 如何選取機型

如要在指定機器系列中選取機型,GKE 會計算 Pod 和任何 DaemonSet 的 CPU 總量、記憶體總量和臨時儲存空間要求總量,這些 Pod 和 DaemonSet 將在新節點上執行。GKE 會將這些值無條件進位至最接近且支援所有總量的可用 Compute Engine 機型。

  • 範例 1:假設 Deployment 有四個副本,並選取 C3D 機器系列。您不必為每個 Pod 要求專用節點,每個副本的資源要求如下:

    • 500m vCPU (0.5 個 vCPU)
    • 1 GiB 記憶體

    Autopilot 會將這四個 Pod 放在由 c3d-standard-4 機器類型支援的節點上,該類型具有 4 個 vCPU 和 16 GB 記憶體。

  • 範例 2:假設 Pod 選取 C3D 機器系列和本機 SSD 做為臨時儲存空間。您為 Pod 要求專用節點。包含 DaemonSet 的資源要求總量如下:

    • 12 個 vCPU
    • 50 GiB 記憶體
    • 200 GiB 的暫時儲存空間

    Autopilot 會將 Pod 放在使用 c3d-standard-16-lssd 機型的節點上,該機型有 16 個 vCPU、64 GiB 記憶體和 365 GiB 本機 SSD 容量。

後續步驟