本頁面說明如何為 Google Kubernetes Engine (GKE) 叢集中的節點指定最低 CPU 平台。
為什麼要選擇最低 CPU 平台?
如果您需要特定 CPU 功能和規格 (例如高基本頻率或最佳化電源管理功能),指定最低 CPU 平台就很有用。
在繪圖、遊戲和數據分析產業中,某些需要大量進階運算的工作負載可以利用不同 CPU 平台功能組所提供的特定功能,像是 AVX-2 和 AVX-512 等。選擇特定的 CPU 平台可以大幅提升執行速度和效能。藉由指定最低 CPU 平台,您的工作負載能以更加合乎預期的方式實現上述效益,同時可以確保您的節點不會使用到其工作負載不適用的 CPU 平台。
如何選擇平台
下表說明如何根據 GKE 的使用方式選擇最低 CPU 平台:
範圍 | 說明 | 支援的叢集設定 |
---|---|---|
工作負載層級 (建議) | 在 Pod 規格中選擇最低平台。 GKE 會依下列方式排定這些 Pod:
|
|
節點和叢集層級 | 建立新的 Standard 模式叢集或節點集區時,請選擇最低 CPU 平台。這項設定不支援節點自動佈建。 如需操作說明,請直接前往「在節點集區層級選擇最低 CPU 平台」。 | 新的標準叢集或節點集區 |
定價
您可以選擇最低 CPU 平台,不需額外付費。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
查看 CPU 平台可用性
可用的 CPU 平台會因節點執行的運算區域而異。即使使用 Autopilot 叢集或區域 Standard 叢集,也應檢查區域中可用的 CPU 平台。
如要查看特定區域的可用平台,請執行下列指令:
gcloud compute zones describe COMPUTE_ZONE
將 COMPUTE_ZONE
替換為區域名稱,例如 us-central1-a
。如果您使用區域叢集類型,請指定該區域中的區域名稱。
輸出結果會與下列內容相似:
availableCpuPlatforms:
- Intel Ice Lake
- Intel Cascade Lake
- Intel Skylake
- Intel Broadwell
- Intel Haswell
- Intel Ivy Bridge
- Intel Sandy Bridge
- AMD Milan
- AMD Rome
- Ampere Altra
- Intel Sapphire Rapids
使用這些值要求最低 CPU 平台時,請將平台名稱中的空格換成底線。例如 AMD_Milan
。
在工作負載層級選擇最低 CPU 平台
如果您使用 GKE Autopilot 叢集或 GKE Standard 叢集搭配節點自動佈建功能,可以在 Pod 規格中選擇最低 CPU 平台。部署工作負載時,GKE 只會將這些 Pod 排定至具有指定平台或更新版本的節點。建議您採用這個方法。
Autopilot
在 Autopilot 中,要求最低 CPU 平台和運算類別。運算類別必須支援 CPU 平台。Autopilot 支援為 Balanced
運算級別選取最低 CPU 平台。如要查看各個運算類別適用的 CPU 平台清單,請參閱「何時該使用特定運算類別」。
將下列資訊清單儲存為 min-cpu.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: min-cpu-platform
labels:
app: min-cpu
spec:
replicas: 3
selector:
matchLabels:
app: min-cpu
template:
metadata:
labels:
app: min-cpu
spec:
nodeSelector:
cloud.google.com/compute-class: "COMPUTE_CLASS"
supported-cpu-platform.cloud.google.com/PLATFORM: "true"
containers:
- name: hello-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 8080
resources:
requests:
cpu: 250m
更改下列內容:
PLATFORM
:CPU 平台的名稱,例如AMD_Milan
。平台名稱區分大小寫,且必須以底線分隔。COMPUTE_CLASS
:運算類別的名稱,必須為Balanced
。
標準
在啟用節點自動佈建功能的 Standard 叢集中,一併要求 CPU 平台和 Compute Engine 機器系列。機器系列必須支援 CPU 平台。如需各個機器系列支援的平台清單,請參閱 Compute Engine CPU 平台。
將下列資訊清單儲存為 min-cpu.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: min-cpu-platform
labels:
app: min-cpu
spec:
replicas: 3
selector:
matchLabels:
app: min-cpu
template:
metadata:
labels:
app: min-cpu
spec:
nodeSelector:
cloud.google.com/machine-family: MACHINE_FAMILY
cloud.google.com/requested-min-cpu-platform: PLATFORM
containers:
- name: hello-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 8080
resources:
requests:
cpu: 250m
更改下列內容:
PLATFORM
:CPU 平台的名稱,例如AMD_Milan
。平台名稱區分大小寫,且必須以底線分隔。MACHINE_FAMILY
:機器家族的名稱,例如n2d
。
部署工作負載:
kubectl apply -f min-cpu.yaml
節點在整個生命週期中都會維持使用同一個平台,除非指定的 CPU 平台已遭到淘汰,在這種情況下,您的節點會在較新的平台上執行。
在節點集區層級選擇最低 CPU 平台
對於沒有節點自動佈建功能的 GKE Standard 叢集,您可以在建立新叢集或節點集區時,指定最低 CPU 平台。只有在無法使用工作負載層級設定時,才應採用這個方法。這項設定不會影響節點自動佈建。
gcloud
如要使用 gcloud CLI 建立使用最低 CPU 平台的新節點集區,請設定 --min-cpu-platform
標記並指定 CPU 平台名稱:
gcloud container node-pools create POOL_NAME \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--min-cpu-platform PLATFORM
更改下列內容:
POOL_NAME
:新節點集區的名稱。CLUSTER_NAME
:叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。PLATFORM
:要在節點集區中執行的 CPU 平台,例如"Intel Broadwell"
。
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下您要修改的叢集名稱。
按一下 add_box「Add Node Pool」(新增節點集區)。
視需要設定節點集區。
按一下導覽窗格中的「Nodes」(節點)。
在「機器設定」下方,
在「系列」下拉式清單中,選取機器類型。
在「Machine type」(機器類型) 下拉式清單中,選取「Custom」(自訂)。
視需要選取「核心」和「記憶體」。
按一下「CPU 平台和 GPU」expand_more。
在「CPU Platform」(CPU 平台) 下拉式清單中,選取最低平台。
點選「建立」。
API
將 minCpuPlatform
屬性包含在要求主體的 nodeConfig
欄位中。minCpuPlatform
的值必須為平台的名稱,例如 Intel Haswell
、Intel Broadwell
和 Intel Sandy Bridge
。
舉例來說,下列要求會建立執行 Intel Broadwell 平台的新節點集區:
POST https://container.googleapis.com/v1/projects/PROJECT_ID/regions/COMPUTE_REGION/clusters/CLUSTER_NAME/nodePools
{
'nodePool': {
'name': 'POOL_NAME',
'nodeConfig': {
'minCpuPlatform': 'Intel Broadwell'
...
}
...
}
}
更改下列內容:
PROJECT_ID
:您的專案 ID。COMPUTE_REGION
:叢集的區域。CLUSTER_NAME
:叢集名稱。POOL_NAME
:新節點集區的名稱。
如果您在建立叢集時指定平台,最低 CPU 平台設定會套用至新叢集中的預設節點集區。
替代方案
您也可以使用下列方法,在 GKE 中選取最低 CPU 平台:
替代方案 | |
---|---|
叢集層級旗標
|
限制
以下限制適用於所有選取最低 CPU 平台的方法:
- 適用所有 Compute Engine 最低 CPU 平台限制。
- 特定 CPU 平台的可用性因區域而異。
- E2 機器類型不支援最低 CPU 平台。您必須選取不同的機器類型。
- Autopilot 叢集僅支援為
Balanced
運算級別選取平台,不支援預設或Scale-Out
運算級別。 - 如果 Autopilot 工作負載要求超過 80 個 vCPU,則最低 CPU 平台必須為 Intel Ice Lake 或更新版本。如果您指定的平台較不先進,Pod 可能會無限期處於
Pending
狀態。
叢集或節點集區最低 CPU 平台設定有以下限制:
如果您選取的最低 CPU 平台比區域的預設 CPU 平台還舊,或是所選平台不再提供使用,GKE 會檢查是否有費用相同但較新的平台。如果較新的平台費用相同,GKE 就會使用較新的平台建立節點。如果沒有價格相同但較新的平台,叢集或節點集區的建立作業就會失敗。