选择满足最低要求的 CPU 平台


本页面介绍如何为 Google Kubernetes Engine (GKE) 集群中的节点指定满足最低要求的 CPU 平台。

为什么要选择满足最低要求的 CPU 平台?

如果您需要特定的 CPU 功能和规范(例如高基频或优化的电源管理功能),则指定满足最低要求的 CPU 平台会非常有用。

图形、游戏和分析行业的某些高级计算密集型工作负载可利用通过不同 CPU 平台功能集提供的特定功能,如 AVX-2 和 AVX-512。选择特定的 CPU 平台可大幅缩短执行时间并提升性能。通过指定满足最低要求的 CPU 平台,您的工作负载能够以更容易预测的方式实现这些收益,并且您可以确保您的节点绝不会使用不适合其工作负载的 CPU 平台。

如何选择平台

下表显示如何根据 GKE 的使用方式选择满足最低要求的 CPU 平台:

范围 说明 支持的集群配置
工作负载级(推荐)

在 Pod 规范中选择满足最低要求的平台。GKE 按如下方式调度这些 Pod:

  • Autopilot:GKE 会在具有指定平台或更高版本的节点上调度 Pod。
  • Standard:GKE 仅在具有指定平台的节点上调度 Pod。例如,如果存在一个 Intel Ice Lake 节点池并且新 Pod 至少请求一个 Intel Cascade Lake,则 GKE 会使用 Intel Cascade Lake 创建一个新的节点池,即使 Intel Cascade Lake 是较高级的平台也不例外。
  • 运行 GKE 1.25 及更高版本的 Autopilot 集群。
  • 具有运行 GKE 1.23 及更高版本的节点自动预配功能的 Standard 集群。

节点和集群级层 创建新的 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"

控制台

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    前往 Google Kubernetes Engine

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 点击 添加节点池

  4. 根据需要配置节点池。

  5. 在导航窗格中,点击节点

  6. 机器配置下,执行以下操作:

  7. 系列下拉列表中,选择机器类型

  8. 机器类型下拉列表中,选择自定义

  9. 根据需要选择核心内存

  10. 点击 CPU 平台和 GPU

  11. CPU 平台下拉列表中,选择所需的平台。

  12. 点击创建

API

minCpuPlatform 属性作为 nodeConfig 字段的一部分添加到请求正文中。minCpuPlatform 的值必须是平台的名称,例如 Intel HaswellIntel BroadwellIntel 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 平台:

替代方案

集群级层标志

--autoprovisioning-min-cpu-platform 标志

限制

以下限制适用于选择满足最低要求的 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 会使用较新的平台创建节点。如果不存在费用相同的较新平台,则创建集群或节点池的操作将会失败。

后续步骤