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


本頁面說明如何在 Google Kubernetes Engine (GKE) Autopilot 叢集中,將工作負載放置在特定 Compute Engine 機器系列上,以獲得最佳工作負載效能。

請務必熟悉下列事項:

機器系列選取方式

您可以在 Pod 規格中新增 cloud.google.com/machine-family 節點選取器,讓 Autopilot 為該 Pod 分配特定 Compute Engine 硬體。舉例來說,您可以為需要更多 CPU 效能的 Pod 選擇 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,取得最新版本。
  • 請確認您現有的 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 機型時,考量暫時性儲存空間要求。

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

為 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,則 c4 為預設值。

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

版本需求

C4D 機器系列提供下列版本和設定:

  • 不含本機 SSD 的 C4D 機型:GKE 1.33.0-gke.1439000 以上版本。
  • C4D 機型 (具備本機 SSD):GKE 1.33.1-gke.1171000 以上版本。

與其他 GKE 功能的相容性

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

Spot Pod 和延長執行時間 Pod 互斥。 即使專屬 Pod 使用工作負載分離功能,GKE 也不會強制提高每個節點的最低資源要求。

GKE 如何選取機器類型

如要在指定的機器系列中選取機型,GKE 會計算 Pod 和任何將在新節點上執行的 DaemonSet 的 CPU 總數、記憶體總數和暫時性儲存空間總數要求。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 容量。

後續步驟