關於 Autopilot 叢集的內建運算級別


本頁說明 Google Kubernetes Engine (GKE) Autopilot 叢集內建的運算類別,適用於有特定硬體需求的工作負載。

Autopilot 叢集內建運算級別總覽

根據預設,GKE Autopilot 叢集中的 Pod 會在容器最佳化運算平台上執行。這個平台非常適合用於一般用途的工作負載,例如網路伺服器和中等強度的批次工作。這個運算平台經過最佳化,可處理容器,提供可靠、可擴充且符合成本效益的硬體設定,滿足大多數工作負載的需求。

如果工作負載有獨特的硬體需求,例如執行機器學習或 AI 工作、執行即時高流量資料庫,或是需要特定 CPU 平台和架構,Autopilot 提供運算類別。這些運算級別是 Compute Engine 機器系列的精選子集,可提供比預設 Autopilot 運算平台更靈活的選擇。舉例來說,Scale-Out 運算類別使用的 VM 會關閉同步多執行緒,並針對向外擴充進行最佳化。

您可以根據各項工作負載的需求,要求以特定運算類別為後盾的節點。與預設的一般用途容器最佳化運算平台類似,Autopilot 會根據您執行的 Pod,管理所要求運算類別的大小和資源分配。您可以在 Pod 層級要求運算類別,為每個 Pod 的需求選擇最合適的類別,進而提升成本效益。

自訂運算類別,享有更多彈性

如果 Autopilot 叢集的內建運算類別不符合工作負載需求,您可以改為設定自己的運算類別。您可以將 ComputeClass Kubernetes CustomResources 部署至叢集,並設定節點屬性集,供 GKE 用於設定叢集中的新節點。如要進一步瞭解自訂運算類別,請參閱「關於自訂運算類別」。

選擇特定 CPU 架構

如果工作負載是為特定 CPU 平台或架構設計,您也可以在 Pod 規格中選取這些平台或架構。舉例來說,如果您希望 Pod 在使用 Arm 架構的節點上執行,可以在 Scale-Out 計算類別中選擇 arm64

定價

系統會根據排定 Pod 的節點,計算 GKE Autopilot Pod 的費用。如要瞭解特定運算類別上一般用途工作負載和 Spot Pod 的定價資訊,以及任何承諾使用折扣的相關資訊,請參閱 Autopilot 模式定價

一般用途或專用運算類別的 Spot Pod 不符合承諾用量折扣資格。

使用特定運算類別的時機

下表提供 Autopilot 支援的預先定義運算類別技術總覽,以及在各平台執行的 Pod 用途範例。如果您未要求運算類別,Autopilot 會將 Pod 放置在一般用途運算平台上,這個平台專為以最佳方式執行大多數工作負載而設計。

如果這些選項都不符合需求,您可以定義及部署自己的自訂運算類別,指定 GKE 在擴大叢集時使用的節點屬性。詳情請參閱「關於自訂運算類別」。

工作負載需求 運算類別 說明 應用實例
不需要特定硬體的工作負載 一般用途

如果您未在 Pod 規格中明確要求運算類別,Autopilot 會使用一般用途運算平台。

您無法在規格中明確選取一般用途平台。

採用 E2 系列機型

有時您可能會在 Autopilot 節點中看到 ek 做為節點機器系列。EK 機器是針對 GKE Autopilot 最佳化的 E2 機型。

  • 網路伺服器
  • 中小型資料庫
  • 開發環境
需要 GPU 的工作負載 Accelerator
  • Pod 隨時可以存取運算資源
  • 沒有 Pod 記憶體或 CPU 限制

相容的 GPU 類型如下:

  • nvidia-b200:NVIDIA B200 (180 GB)
  • nvidia-h200-141gb:NVIDIA H200 (141 GB)
  • nvidia-h100-mega-80gb:NVIDIA H100 Mega (80 GB)
  • nvidia-h100-80gb:NVIDIA H100 (80 GB)
  • nvidia-a100-80gb:NVIDIA A100 (80 GB)
  • nvidia-tesla-a100:NVIDIA A100 (40GB)
  • nvidia-l4:NVIDIA L4
  • nvidia-tesla-t4:NVIDIA T4

  • 以 GPU 為中心的 AI/機器學習訓練與推論
CPU 或記憶體要求大於一般用途運算類別上限或特定 CPU 平台 Balanced
  • 可用 CPU:AMD EPYC Rome、AMD EPYC Milan、Intel Ice Lake、Intel Cascade Lake
  • 適用架構:amd64
  • 支援的資源要求比一般用途更大
  • 可為 Pod 設定最低 CPU 平台,例如「Intel Ice Lake 以上」。

N2 機器系列 (Intel) 或 N2D 機器系列 (AMD) 為基礎。

  • 網路伺服器
  • 中型到大型資料庫
  • 快取
  • 串流和媒體放送
  • Hyperdisk Throughput 和 Extreme 儲存空間
工作負載需要特定機型系列,但其他運算類別未涵蓋 特定機器系列
  • 適用架構:amd64、arm64
  • Pod 可以為節點要求特定機器系列
  • 沒有 Pod 記憶體或 CPU 限制

詳情請參閱「選擇機器系列,最佳化 Autopilot Pod 效能」。

  • 以 CPU 為主的 AI/機器學習訓練與推論
  • HPC 批次工作負載
  • Hyperdisk Balanced、Throughput 和 Extreme 儲存空間
需要大量 CPU 資源的工作負載,例如 AI/機器學習訓練或高效能運算 (HPC) Performance
  • 適用架構:amd64、arm64
  • Pod 隨時可以存取運算資源
  • 沒有 Pod 記憶體或 CPU 限制
  • 每個節點一個 Pod

如要查看適用於效能運算類別的 Compute Engine 機器系列清單,請參閱支援的機器系列

  • 以 CPU 為主的 AI/機器學習訓練與推論
  • HPC 批次工作負載
  • Hyperdisk Balanced、Throughput 和 Extreme 儲存空間
每個核心單一執行緒的運算和水平調度 Scale-Out
  • 可用 CPU:Ampere Altra Arm 或 AMD EPYC Milan
  • Compute Engine 機器系列:T2A (Arm)、T2D (x86)
  • 可用架構:arm64 或 amd64
  • SMT 關閉。 一個 vCPU 等於一個實體核心。
  • 最高時脈速度 3.5 GHz

Tau T2A 機器系列 (Arm) 或 Tau T2D 機器系列 (x86) 支援。

  • 網路伺服器
  • 容器化微服務
  • 資料記錄處理
  • 大規模 Java 應用程式
  • Hyperdisk Throughput 儲存空間

如何在 Autopilot 中選取運算級別

如需詳細操作說明,請參閱「為 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 密集型工作負載」。

部署工作負載時,Autopilot 會執行下列操作:

  • 自動佈建以指定設定為基礎的節點,以執行 Pod。
  • 自動將汙點新增至新節點,防止其他 Pod 排程至這些節點。每個運算類別都有專屬的汙點。如果您也選取 CPU 架構,GKE 會新增專屬於該架構的獨立汙點。
  • 自動將與套用的 taint 對應的容許條件新增至已部署的 Pod,讓 GKE 將這些 Pod 放置在新節點上。

舉例來說,如果您為 Pod 要求 Scale-Out 計算類別:

  1. Autopilot 會為這些節點新增 Scale-Out 專用的汙點。
  2. Autopilot 會為 Scale-Out Pod 新增該汙染的容許條件。

未要求 Scale-Out 的 Pod 不會獲得容許度。因此,GKE 不會在 Scale-Out 節點上排定這些 Pod。

如果您未在工作負載規格中明確要求運算類別,Autopilot 會在節點上排程 Pod,這些節點使用預設的一般用途運算類別。大多數工作負載都能在一般用途運算類別上順利執行。

如何要求 CPU 架構

在某些情況下,您的工作負載可能專為特定架構 (例如 Arm) 建構。部分運算類別 (例如「平衡」或「向外擴充」) 支援多種 CPU 架構。您可以在節點選取器或節點親和性規則中指定標籤,藉此在運算類別要求中一併要求特定架構,如下列範例所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-arm
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-arm
  template:
    metadata:
      labels:
        app: nginx-arm
    spec:
      nodeSelector:
        cloud.google.com/compute-class: COMPUTE_CLASS
        kubernetes.io/arch: ARCHITECTURE
      containers:
      - name: nginx-arm
        image: nginx
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi

ARCHITECTURE 替換為所需的 CPU 架構,例如 arm64amd64

如果您未明確要求架構,Autopilot 會使用指定運算類別的預設架構。

Autopilot 上的 Arm 架構

Autopilot 支援要求使用 Arm CPU 架構的節點。與類似的 x86 節點相比,Arm 節點的成本效益更高,同時還能提升效能。如要瞭解如何要求 Arm 節點,請參閱「在 Arm 架構上部署 Autopilot 工作負載」。

請確認部署作業中使用的圖片正確無誤。如果 Pod 使用 Arm 映像檔,但您未要求 Arm 節點,Autopilot 會在 x86 節點上排定 Pod,導致 Pod 損毀。同樣地,如果您不慎使用 x86 映像檔,但為 Pod 要求 Arm 節點,Pod 就會當機。

運算類別工作負載的 Autopilot 驗證

Autopilot 會驗證工作負載資訊清單,確保節點選取器或節點親和性規則中的運算類別和架構要求格式正確。規則如下:

  • 最多只能有一個運算類別。
  • 沒有不支援的運算類別。
  • GKE 版本必須支援運算類別。
  • 最多只能選取一個架構。
  • 運算類別必須支援所選架構。

如果工作負載資訊清單未通過任何一項驗證,Autopilot 會拒絕該工作負載。

運算類別的區域可用性

下表說明特定運算類別和 CPU 架構的適用區域:

運算類別可用性
一般用途 所有區域
Balanced 所有區域
Performance 所有包含支援機器系列的區域。
Scale-Out 包含對應 Compute Engine 機型系列的地區。如要查看特定機器系列的可用性,請使用「可用地區和區域」中的篩選器。

如果特定地區提供運算類別,則該地區至少有兩個區域提供硬體。

預設、最低和最高資源要求

為 Autopilot 工作負載選擇運算類別時,請務必指定符合該運算類別資源要求上下限的資源要求。如要瞭解預設要求,以及各運算類別的最低和最高要求,請參閱「GKE Autopilot 中的資源要求和限制」。

後續步驟