本文說明如何將工作負載放在特定 Compute Engine 機器系列,在 Google Kubernetes Engine (GKE) Autopilot 叢集發揮最佳工作負載效能。
請確認您熟悉下列事項:
- Compute Engine 機器系列和用途
- 應用程式的核心層級需求
機器系列選取功能的運作方式
您可以在 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 排程行為:
- 如果 Pod 可與其他 Pod 共用運算資源,或您想在專用硬體上執行 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 機器系列。
將下列資訊清單儲存為
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。如需支援的值,請參閱本頁面的「支援的機器系列」。部署 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。
將下列資訊清單儲存為
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 的排程,部署作業就會失敗並顯示錯誤。部署 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 都有專屬節點的情況)
- 工作負載區隔
- 運算資源預留項目
- 承諾使用折扣
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 容量。
後續步驟
- 如需 Autopilot 針對各種用途提供的運算選項指引,請參閱「Autopilot 中的運算級別」。
- 在 Autopilot 中部署以 GPU 為基礎的工作負載。