本页面介绍如何为 Google Kubernetes Engine (GKE) 集群中的节点指定满足最低要求的 CPU 平台。
为什么要选择满足最低要求的 CPU 平台?
如果您需要特定的 CPU 功能和规范(例如高基频或优化的电源管理功能),则指定满足最低要求的 CPU 平台会非常有用。
图形、游戏和分析行业的某些高级计算密集型工作负载可利用通过不同 CPU 平台功能集提供的特定功能,如 AVX-2 和 AVX-512。选择特定的 CPU 平台可大幅缩短执行时间并提升性能。通过指定满足最低要求的 CPU 平台,您的工作负载能够以更容易预测的方式实现这些收益,并且您可以确保您的节点绝不会使用不适合其工作负载的 CPU 平台。
如何选择平台
下表显示如何根据 GKE 的使用方式选择满足最低要求的 CPU 平台:
范围 | 说明 | 支持的集群配置 |
---|---|---|
工作负载级(推荐) | 在 Pod 规范中选择满足最低要求的平台。GKE 按如下方式调度这些 Pod:
|
|
节点和集群级层 | 创建新的 Standard 模式集群或节点池时,请选择满足最低要求的 CPU 平台。此设置不支持节点自动预配。如需查看相关说明,请跳到在节点池级层选择满足最低要求的 CPU 平台。 | 新的 Standard 集群或节点池 |
价格
您可以选择满足最低要求的 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 \
--region COMPUTE_REGION \
--min-cpu-platform PLATFORM
请替换以下内容:
POOL_NAME
:新节点池的名称。CLUSTER_NAME
:您的集群的名称。COMPUTE_REGION
:集群的区域。PLATFORM
:您要在节点池中运行的 CPU 平台,例如"Intel Broadwell"
。
控制台
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
在集群列表中,点击您要修改的集群的名称。
点击 add_box 添加节点池。
根据需要配置节点池。
在导航窗格中,点击节点。
在机器配置下,执行以下操作:
在系列下拉列表中,选择机器类型。
在机器类型下拉列表中,选择自定义。
根据需要选择核心和内存。
点击 expand_more CPU 平台和 GPU。
在 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 会使用较新的平台创建节点。如果不存在费用相同的较新平台,则创建集群或节点池的操作将会失败。