Autopilot 叢集中的「平衡」和「水平擴展」運算級別簡介


您可以在 Google Kubernetes Engine (GKE) Autopilot 叢集中使用 BalancedScale-Out ComputeClasses,執行需要額外運算容量或專用 CPU 設定的工作負載。如果您是叢集管理員,而且希望運算選項比預設的 Autopilot 叢集設定更具彈性,歡迎參閱這個頁面。

平衡和擴展運算 ComputeClass 總覽

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

如果工作負載有獨特的硬體需求 (例如執行機器學習或 AI 工作、執行即時高流量資料庫,或需要特定 CPU 平台和架構),您可以使用 ComputeClasses 佈建該硬體。

在 Autopilot 叢集中,GKE 提供下列精選的 ComputeClass,讓您執行需要比預設容器最佳化運算平台更靈活的 Pod:

  • Balanced:提供比容器最佳化運算平台更高的 CPU 和記憶體容量上限。
  • Scale-Out:停用多執行緒並行 (SMT) 功能,並針對向外擴充進行最佳化。

這些 ComputeClass 僅適用於 Autopilot 叢集。與預設的容器最佳化運算平台類似,Autopilot 會根據執行的 Pod 管理節點大小和資源分配。

自訂運算類別,提供額外彈性

如果 Autopilot 叢集中的 Balanced 或 Scale-Out ComputeClass 無法滿足工作負載需求,您可以自行設定 ComputeClass。 您可以使用節點屬性集,將 ComputeClass Kubernetes 自訂資源部署至叢集,GKE 會使用這些屬性集設定叢集中的新節點。舉例來說,這些自訂 ComputeClass 可讓您在任何 GKE Autopilot 或 Standard 叢集中,將工作負載部署在與 BalancedScale-Out ComputeClass 相同的硬體上。詳情請參閱「關於 GKE Standard 中的 Autopilot 模式工作負載」。

定價

使用 BalancedScale-Out ComputeClass 的 Pod 會根據下列 SKU 計費:

詳情請參閱「GKE 定價」。

平衡和向外擴充技術詳細資料

本節說明 BalancedScale-Out 類別的機器類型和用途。如果未在 Pod 中要求 ComputeClass,Autopilot 會預設將 Pod 放在容器最佳化運算平台上。如果 Autopilot 節點使用容器最佳化運算平台,有時可能會顯示 ek 做為節點機器系列。EK 機器是 Autopilot 專用的 E2 機器類型。

下表提供 BalancedScale-Out ComputeClass 的技術總覽。

平衡和向外擴充 ComputeClass
Balanced

提供的 CPU 容量和記憶體容量,都比容器最佳化運算平台的最大值更高。提供額外的 CPU 平台,並可為 Pod 設定最低 CPU 平台,例如 Intel Ice Lake 以上版本。

  • 可用 CPU:AMD EPYC Rome、AMD EPYC Milan、Intel Ice Lake、Intel Cascade Lake
  • 適用架構:amd64
  • 機器系列N2 (Intel CPU) 或 N2D 機器系列 (AMD CPU)。

針對下列應用程式使用 Balanced 類別:

  • 網路伺服器
  • 中型到大型資料庫
  • 快取
  • 串流和媒體放送
  • Hyperdisk Throughput 和 Extreme 儲存空間
Scale-Out

提供每個核心的單一執行緒運算和水平調度。

  • 可用 CPU:Ampere Altra Arm 或 AMD EPYC Milan
  • 可用架構:arm64 或 amd64
  • 機器系列T2A (Arm) 或 T2D (x86)。
  • 其他功能
    • SMT 已停用,因此一個 vCPU 等於一個實體核心。
    • 最高時脈速度 3.5 GHz。

針對下列應用程式使用 Scale-Out 類別:

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

在工作負載中選取 ComputeClass

如要為 GKE 工作負載使用 ComputeClass,請在工作負載資訊清單中選取 ComputeClass,方法是使用 cloud.google.com/compute-class 標籤的節點選取器

以下 Deployment 資訊清單範例會選取 ComputeClass:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloweb
  labels:
    app: hello
spec:
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      nodeSelector:
        # Replace with the name of a compute class
        cloud.google.com/compute-class: COMPUTE_CLASS 
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: "250m"
            memory: "4Gi"

COMPUTE_CLASS 替換為 ComputeClass 的名稱,例如 BalancedScale-Out。每個工作負載最多只能選取一個 ComputeClass。

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

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

舉例來說,如果您為 Pod 要求 Scale-Out ComputeClass:

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

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

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

如何要求 CPU 架構

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

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。您最多只能在工作負載中選取一個架構。所選的 ComputeClass 必須支援您指定的架構。

如果您未明確要求架構,Autopilot 會使用 ComputeClass 的預設架構。

Autopilot 上的 Arm 架構

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

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

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

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

後續步驟