本頁面說明如何在 Google Kubernetes Engine (GKE) Autopilot 叢集中,將工作負載放置在特定 Compute Engine 機器系列上,以獲得最佳工作負載效能。
請務必熟悉下列事項:
- 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 排程行為:
- 如果 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
,取得最新版本。
- 請確認您現有的 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 機型時,考量暫時性儲存空間要求。
詳情請參閱「搭配 Autopilot 叢集使用本機 SSD 支援的臨時儲存空間」。
為 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
,則 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 都有專屬節點的情況)
- 工作負載區隔
- 容量預留
- 承諾使用折扣
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 容量。
後續步驟
- 如要瞭解 Autopilot 為各種用途提供的運算選項,請參閱「Autopilot 中的運算類別」。
- 在 Autopilot 中部署以 GPU 為基礎的工作負載。