选择满足最低要求的 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 命令以获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。

检查 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"

控制台

  1. 前往 Cloud de Confiance 控制台中的 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 会使用较新的平台创建节点。如果不存在费用相同的较新平台,则创建集群或节点池的操作将会失败。

后续步骤