在 Google Kubernetes Engine (GKE) 标准集群中,您可以让 GKE 自动为待处理的 Pod 创建节点池,从而减少手动管理基础架构的工作量。本文档介绍如何为集群和工作负载启用节点池自动创建功能、为自动创建的节点设置默认值,以及针对一些常见使用情形触发自动创建。
本文档适用于在标准集群中管理基础架构并将工作负载部署到标准集群的集群管理员、运维人员和开发者。如需详细了解节点池自动创建功能的工作原理以及不同的启用方法(例如 ComputeClass 和集群级节点自动预配),请参阅关于节点池自动创建。
限制
节点池自动创建功能具有以下限制:
- 集群自动扩缩器的所有限制也适用于节点池自动创建。
- 如果集群的总节点池数量超过 200 个,则在自动扩缩期间延迟可能会增加。任何会触发创建新节点池的配置(例如工作负载分离或使用多个 ComputeClass)都会增加此数量。如需详细了解集群限制,请参阅限制和最佳实践中的“规划大型集群”。
- 您在启用节点自动预配功能时为集群设置的任何资源限制也会应用于 GKE 为 ComputeClass 创建的节点池。
- ComputeClass 不支持以下设置:
- 超额配置升级或蓝绿升级。
- 节点完整性和安全启动。
- 如需在 1.33.3-gke.1136000 之前的 GKE 版本中为 ComputeClass 启用节点池自动创建功能,您还必须启用集群级节点自动预配功能。此限制不适用于 GKE 1.33.3-gke.1136000 版及更高版本。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
命令以获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。
要求
在任何 GKE 版本中,您都可以使用节点自动预配功能为整个集群启用节点池自动创建功能。如果您想使用 ComputeClass 在工作负载级别启用节点池自动创建功能,但不想启用节点自动预配功能,则集群必须满足以下要求:
- 使用 GKE 1.33.3-gke.1136000 版或更高版本。
- 使用快速发布渠道。
如需针对特定节点配置触发节点池自动创建,您必须满足相应的版本要求。如需详细了解各种配置的版本支持,请参阅 GKE 版本说明(新功能)或您的使用情形对应的文档。
启用工作负载级自动创建
您可以使用 ComputeClass 为集群中的特定工作负载启用节点池自动创建功能。ComputeClass 规范中的 nodePoolAutoCreation
字段用于控制 GKE 是否可以为选择相应 ComputeClass 的 Pod 创建新的节点池。在 GKE 1.33.3-gke.1136000 版及更高版本中,即使集群未启用节点自动预配,您也可以为 ComputeClass 启用节点池自动创建功能。在 1.33.3-gke.1136000 之前的版本中,您还必须启用集群级节点自动预配。
如需为 ComputeClass 启用节点池自动创建功能,请按以下步骤操作:
使用满足以下要求的新 Standard 集群或现有 Standard 集群:
- 使用 GKE 1.33.3-gke.1136000 版或更高版本。
- 使用快速发布渠道。
您可以选择创建新的 Standard 集群。
如果您的集群不符合上一步中的要求,请启用集群级节点自动预配。
将以下 ComputeClass 示例保存为 YAML 文件:
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n2 whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
将
COMPUTE_CLASS
替换为新 ComputeClass 的名称。如需详细了解 ComputeClass 中的可用字段,请参阅 ComputeClass CustomResourceDefinition。将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。将以下选择 ComputeClass 的 Deployment 示例保存为
helloweb-deploy.yaml
:在集群中创建 Deployment:
kubectl apply -f helloweb-deploy.yaml
如需验证 GKE 是否为您的 Pod 创建了新的节点池,请获取集群中节点池的列表:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION
替换以下内容:
CLUSTER_NAME
:您的集群的名称。CONTROL_PLANE_LOCATION
:集群控制平面所在的区域或可用区,例如us-central1
或us-central1-a
。
启用集群级节点自动预配
如需为整个 GKE 集群启用节点池自动创建功能,请使用节点自动预配设置。借助节点自动预配功能,GKE 可以根据 Pod 规范或 ComputeClass 中的配置,为集群中待处理的工作负载创建新的节点池。您可以为新集群或现有集群启用节点自动预配功能。
在启用节点自动预配功能之前,请规划 VPC 子网的主要 IPv4 地址范围的大小。GKE 会将此 IP 地址范围用作主要节点 IP 地址范围。根据集群的大小和规模,默认节点 IP 地址范围可能没有足够的 IP 地址来分配给新节点。如果您在创建集群后更新节点 IP 地址范围的大小,则必须更新 GKE 集群防火墙规则,以允许来自新 IP 地址的流量。
如需在低于 1.33.3-gke.1136000 的 GKE 版本中获取自动创建的节点池,您必须执行本部分中的步骤。您还可以通过在 Google Cloud 控制台中修改集群配置,为现有集群启用节点自动预配功能。
如需在创建新集群时启用节点自动预配,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往创建 Kubernetes 集群页面。
在集群基本信息页面上,为新集群指定名称和位置。
在导航菜单中,点击自动化。
选中启用节点自动预配功能复选框。系统会显示“限制”部分。
指定 CPU 和内存限制。
点击保存更改。
gcloud
gcloud container clusters create CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--min-cpu=MINIMUM_CPU \
--min-memory=MINIMUM_MEMORY \
--max-cpu=MAXIMUM_CPU \
--max-memory=MAXIMUM_MEMORY \
--autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only
替换以下内容:
CLUSTER_NAME
:要启用节点自动预配功能的集群的名称。CONTROL_PLANE_LOCATION
:集群控制平面所在的区域或可用区,例如us-central1
或us-central1-a
。MINIMUM_CPU
:集群中的核心数下限。MINIMUM_MEMORY
:集群中的最小内存容量(以 GiB 为单位)。MAXIMUM_CPU
:集群中的核心数上限。 此限制适用于集群中所有新节点和现有节点的 CPU 核心数总和,包括手动创建的节点池。MAXIMUM_MEMORY
:集群中的最大内存容量(以 GiB 为单位)。此限制适用于集群中所有新节点池和现有节点池(包括手动创建的节点池)的总内存容量。
使用节点自动预配配置文件配置设置
您可以使用 YAML 配置文件为节点自动预配功能配置资源限制和节点配置设置。借助配置文件,您可以声明性地为自动创建的节点池指定默认值,还可以执行高级配置,例如启用节点自动修复。此文件与 ComputeClass(Kubernetes 自定义资源)无关。相反,配置文件是一种更具可扩展性的替代方案,可用于指定节点自动预配的设置,而无需使用命令行标志。如需了解详情,请参阅使用配置文件设置集群级默认设置。
如需创建和使用配置文件,请按以下步骤操作:
- 在文本编辑器中,在 Google Cloud CLI 可以访问的路径中创建一个 YAML 文件。
添加要设置或修改的配置,如以下示例所示:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true
在此示例中,节点自动预配功能具有以下设置:
resourceLimits
:设置集群中 CPU、内存容量和 NVIDIA T4 GPU 的资源限制。这些限制适用于集群中的资源容量总和,包括手动创建的节点池中的资源容量。management
:为集群中所有新自动创建的节点池启用节点自动修复和节点自动升级功能。shieldedInstanceConfig
:为集群中所有自动创建的新节点池启用安全启动和节点完整性监控功能。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
将配置文件应用于集群后,GKE 会将文件中的设置用于集群中自动创建的新节点池。这些设置不适用于 GKE 在集群中创建的现有节点池。
为节点自动预配配置资源限制
使用集群级节点自动预配时,您必须为集群在所有节点池中可拥有的资源总量配置限制。如需为集群启用节点自动预配,您必须为集群中的 CPU 和内存容量指定限制。此外,如需使用其他类型的附加资源(例如 GPU 和 TPU),您必须为这些资源指定限额。只有在您为集群启用节点自动预配设置时,才需要设置这些限制。如果您仅使用 ComputeClass 来获取自动创建的节点池,则无需配置资源限制。
您可以使用以下方法之一,为节点池自动创建功能添加或修改资源限制:
- Google Cloud 控制台
- gcloud CLI 标志
- 集群级配置文件
如需为现有集群配置资源限制,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往 Kubernetes 集群页面。
点击集群的名称。系统会打开集群详情页面。
点击详情标签页。
在自动化部分的节点自动预配行中,点击
修改。系统会打开修改节点自动配置窗格。选中启用节点自动预配功能复选框。
在限制部分中,指定集群中 CPU 和内存容量的最小值和最大值。
如需为其他资源(例如 GPU 或 TPU)配置限制,请执行以下操作:
- 点击 添加资源。
- 从资源类型下拉列表中,选择 GPU 型号或 TPU 机器类型,例如 NVIDIA A100 80GB 或 ct5p。
- 为资源指定最小值和最大值。
可选:在节点池位置部分中,选择 GKE 要在其中创建节点的特定可用区。例如,如果您计划运行 GPU 工作负载,请选择所选 GPU 类型具有高可用性的可用区。
点击保存更改。
gcloud
运行下列其中一个命令:
指定 CPU 和内存资源限制:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY
替换以下内容:
MINIMUM_CPU
:集群中的核心数下限。MINIMUM_MEMORY
:集群中的最小内存容量(以 GiB 为单位)。MAXIMUM_CPU
:集群中的核心数上限。 此限制适用于集群中所有节点池(包括手动创建的节点池)的 CPU 核心数总和。MAXIMUM_MEMORY
:集群中的最大内存容量(以 GiB 为单位)。此限制适用于集群中所有节点池(包括手动创建的节点池)的内存容量总和。
指定 GPU 资源限制:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=GPU_TYPE,count=MINIMUM_GPU_COUNT \ --max-accelerator=type=GPU_TYPE,count=MAXIMUM_GPU_COUNT
替换以下内容:
GPU_TYPE
:要设置限制的 GPU 类型,例如nvidia-l4
。MINIMUM_GPU_COUNT
:集群可拥有的指定类型 GPU 的最小数量。MAXIMUM_GPU_COUNT
:集群可拥有的指定类型 GPU 的最大数量。
指定 TPU 资源限制:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=TPU_TYPE,count=MINIMUM_TPU_COUNT \ --max-accelerator=type=TPU_TYPE,count=MAXIMUM_TPU_COUNT
替换以下内容:
TPU_TYPE
:要设置限制的 TPU 类型。支持以下值:tpu-v4-podslice
:TPU v4。tpu-v5-lite-podslice
:机器类型以ct5lp-
开头的 TPU v5e。tpu-v5p-slice
:机器类型以ct5p-
开头的 TPU v5e。tpu-v6e-slice
:TPU Trillium。
MINIMUM_TPU_COUNT
:集群可拥有的指定类型的 TPU 芯片数量下限。如果您指定的值大于多主机 TPU 切片中的 TPU 芯片数量,则 TPU 切片可能无法缩减。MAXIMUM_TPU_COUNT
:集群可拥有的指定类型的 TPU 芯片数量上限。对于多主机 TPU 切片,请指定一个大于每个切片中芯片数量的值,以便 GKE 可以以原子方式扩缩切片。切片中的芯片数量是 TPU 拓扑的乘积。例如,如果拓扑为2x2x2
,则切片中的芯片数量为8
,这意味着 MAXIMUM_TPU_COUNT 的值必须大于8
。
配置文件
在配置文件中,于
resourceLimits
字段中指定以下字段集之一:指定 CPU 和内存资源限制:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY
替换以下内容:
MINIMUM_CPU
:集群中的核心数下限。MINIMUM_MEMORY
:集群中的最小内存容量(以 GiB 为单位)。MAXIMUM_CPU
:集群中的核心数上限。 此限制适用于集群中所有节点池(包括手动创建的节点池)的 CPU 核心数总和。MAXIMUM_MEMORY
:集群中的最大内存容量(以 GiB 为单位)。此限制适用于集群中所有节点池(包括手动创建的节点池)的内存容量总和。
指定 GPU 资源限制:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'GPU1_TYPE' minimum: MINIMUM_GPU1_COUNT maximum: MAXIMUM_GPU1_COUNT - resourceType: 'GPU2_TYPE' minimum: MINIMUM_GPU2_COUNT maximum: MAXIMUM_GPU2_COUNT
替换以下内容:
GPU1_TYPE
、GPU2_TYPE
:要设置限制的 GPU 类型,例如nvidia-l4
。MINIMUM_GPU1_COUNT
、MINIMUM_GPU2_COUNT
:集群可拥有的指定类型 GPU 的最少数量。MAXIMUM_GPU1_COUNT
、MAXIMUM_GPU2_COUNT
:集群可拥有的指定类型的 GPU 数量上限。
指定 TPU 资源限制:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'TPU1_TYPE' minimum: MINIMUM_TPU1_COUNT maximum: MAXIMUM_TPU1_COUNT - resourceType: 'TPU2_TYPE' minimum: MINIMUM_TPU2_COUNT maximum: MAXIMUM_TPU2_COUNT
替换以下内容:
TPU1_TYPE
、TPU2_TYPE
:要设置限额的 TPU 类型。支持以下值:tpu-v4-podslice
:TPU v4。tpu-v5-lite-podslice
:机器类型以ct5lp-
开头的 TPU v5e。tpu-v5p-slice
:机器类型以ct5p-
开头的 TPU v5e。tpu-v6e-slice
:TPU Trillium。
MINIMUM_TPU1_COUNT
、MINIMUM_TPU2_COUNT
:集群可拥有的指定类型的 TPU 芯片数量下限。如果您指定的值大于多主机 TPU 切片中的 TPU 芯片数量,则 TPU 切片可能无法缩减。MAXIMUM_TPU1_COUNT
、MAXIMUM_TPU2_COUNT
:集群可拥有的指定类型的 TPU 芯片数量上限。对于多主机 TPU 切片,请指定一个大于每个切片中芯片数量的值,以便 GKE 可以以原子方式扩缩切片。切片中的芯片数量是 TPU 拓扑的乘积。例如,如果TPU1_TYPE
的拓扑为2x2x2
,则切片中的芯片数量为8
,这意味着MAXIMUM_TPU1_COUNT
的值必须大于8
。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
将现有节点池标记为自动创建
启用集群级节点自动预配功能后,您可以将集群中的任何现有节点池标记为自动创建。GKE 会管理这些节点池中的伸缩,包括在节点池为空时将其删除。您可以将手动创建的节点池标记为自动创建,以便让 GKE 为您管理这些节点池。
如果您为集群停用自动预配,GKE 会停止管理集群中所有现有的自动创建的节点池。如果您稍后为集群重新启用自动预配功能,GKE 不会自动恢复对这些现有节点池的管理。您必须将这些现有节点池标记为自动创建。
如需将现有节点池标记为自动创建,请运行以下命令:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning
将 NODE_POOL_NAME
替换为节点池的名称。
为自动创建的节点池配置默认设置
GKE 会使用您的 ComputeClass 和 Pod 规范来确定哪些类型的节点可以最佳地运行待处理的 Pod。您可以选择性地配置 GKE 应用于自动创建的节点池的默认设置,例如节点的自定义 Identity and Access Management (IAM) 服务账号或自定义启动磁盘配置。这些默认设置会替换 Google 为您的集群设置的任何相应默认值。例如,您可以将 Ubuntu 节点映像设置为自动创建的节点池的默认映像,从而替换 GKE 默认的 Container-Optimized OS 节点映像。
您可以使用节点自动预配在集群级配置默认设置,也可以在 ComputeClass 中在工作负载级配置默认设置。在上述任一级别配置设置之前,请考虑以下事项:
- 集群级设置适用于集群中的任何自动创建的节点池,而 ComputeClass 设置仅适用于使用相应 ComputeClass 的工作负载。
- 如果您在 ComputeClass 中和集群级层指定了相同的默认设置,则对于使用该 ComputeClass 的工作负载,GKE 会使用 ComputeClass 设置。
- 您配置的所有默认值仅适用于新自动创建的节点池。现有节点池不受影响。
以下部分将介绍如何配置特定的默认设置。
设置默认节点映像
从下列选项中选择一项:
ComputeClass
在 ComputeClass 清单中,使用
nodePoolConfig.imageType
字段。GKE 1.32.4-gke.1198000 版及更高版本支持此字段。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: imageType: IMAGE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
将
IMAGE_TYPE
替换为节点映像的值,该值可以是以下任一值:cos_containerd
:带有 containerd 的 Container-Optimized OS。ubuntu_containerd
:带有 containerd 的 Ubuntu。
将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。
gcloud
如需在命令行中设置默认节点映像,请使用 --autoprovisioning-image-type
标志:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-image-type=IMAGE_TYPE
替换以下内容:
CLUSTER_NAME
:集群的名称。IMAGE_TYPE
:节点映像,可以是以下值之一:cos_containerd
:带有 containerd 的 Container-Optimized OS。ubuntu_containerd
:带有 containerd 的 Ubuntu。
如需在配置文件中设置默认节点映像,请按以下步骤操作:
在配置文件中,指定
imageType
字段:imageType: 'IMAGE_TYPE'
如果您的配置文件包含其他设置,请勿修改这些设置。配置文件中的任何修改或移除操作也会修改相应的集群级设置。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
为节点设置默认 IAM 服务账号
GKE 节点使用 IAM 服务账号执行日志记录和监控等系统任务。如需更改自动创建的节点池的 IAM 服务账号,请选择以下选项之一:
ComputeClass
在 Computeclass 清单中,使用
nodePoolConfig.serviceAccount
字段。GKE 1.31.4-gke.1072000 版及更高版本支持此字段。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
替换以下内容:
SERVICE_ACCOUNT_NAME
:IAM 服务账号的名称,例如my-node-account
。PROJECT_ID
:服务账号项目的项目 ID。
将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。
gcloud
使用 gcloud CLI 为自动创建的节点池配置默认服务账号时,您还必须指定节点池正常运行所需的访问范围。
如需在命令行中设置默认服务账号和访问权限范围,请使用 --autoprovisioning-service-account
和 --autoprovisioning-scopes
标志:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
--autoprovisioning-scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
替换以下内容:
SERVICE_ACCOUNT_NAME
:IAM 服务账号的名称,例如my-node-account
。PROJECT_ID
:服务账号项目的项目 ID。
如需在配置文件中设置默认服务账号和访问范围,请按以下步骤操作:
在配置文件中,指定
serviceAccount
和scopes
字段:serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com scopes: https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
如果您的配置文件包含其他设置,请勿修改这些设置。配置文件中的任何修改或移除操作也会修改相应的集群级设置。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
为自动创建的节点设置默认可用区
默认情况下,GKE 会在以下可用区中自动创建节点,具体取决于集群类型:
- 区域级集群:GKE 会在集群区域中的三个随机可用区创建节点。
- 可用区级集群:GKE 会在与集群控制平面相同的可用区中创建节点。
您可以手动指定 GKE 自动创建节点的可用区列表。这些可用区必须与集群控制平面位于同一区域。例如,如果您有一个可用区集群,其控制平面位于 us-central1-a
中,则可以指定 us-central1
区域中的任何可用区,以便 GKE 自动创建节点。如果您修改现有集群中自动创建的节点的默认可用区,所做更改仅适用于 GKE 创建的新节点池。
如需为自动创建的节点指定默认可用区,请选择以下选项之一:
ComputeClass
在 ComputeClass 清单中,使用
spec.priorityDefaults.location.zones
字段。GKE 1.33.1-gke.1545000 版及更高版本支持此字段。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorityDefaults: location: zones: ['ZONE1','ZONE2','...'] priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
将
ZONE1,ZONE2,...
替换为自动创建的节点的默认可用区列表(以英文逗号分隔),例如“us-central1-a','us-central1-b', 'us-central1-f'
”。如果spec.priorities
字段中的特定规则未明确列出可用区,GKE 会使用这些可用区。将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。
gcloud
如需在命令行中设置节点池自动创建的默认可用区,请使用 --autoprovisioning-locations
标志:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-locations=ZONE1,ZONE2,...
将 ZONE1,ZONE2,...
替换为自动创建的节点的默认可用区列表(以英文逗号分隔),例如“us-central1-a','us-central1-b', 'us-central1-f'
”。
如需使用配置文件设置节点池自动创建的默认可用区,请按以下步骤操作:
在配置文件中指定
autoprovisioningLocations
字段:autoprovisioningLocations: - ZONE1 - ZONE2
将
ZONE1
、ZONE2
替换为自动创建的节点的默认可用区,例如“us-central1-a
”和“us-central1-b
”。如果您的配置文件包含其他设置,请勿修改这些设置。配置文件中的任何修改或移除操作也会修改相应的集群级设置。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
为启动磁盘加密设置客户管理的加密密钥
您可以在 Cloud Key Management Service 中指定一个客户管理的加密密钥 (CMEK),供 GKE 用于加密自动创建的节点池中节点的启动磁盘。您必须先创建密钥,然后才能将其用于节点池自动创建功能。如需为节点启动磁盘设置 CMEK,请选择以下选项之一:
ComputeClass
在 ComputeClass 中,您必须在 ComputeClass 的 spec.priorities
字段中为每个优先级规则指定键。
在 ComputeClass 清单中,使用
priorities.storage.bootDiskKMSKey
字段:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME - machineFamily: n4d storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
替换以下内容:
KEY_PROJECT_ID
:拥有密钥的项目的项目 ID。KEY_LOCATION
:密钥环的位置。KEY_RING
:包含密钥的密钥环的名称。KEY_NAME
:密钥的名称。
将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。
gcloud
在配置文件中指定
bootDiskKmsKey
字段:bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
替换以下内容:
KEY_PROJECT_ID
:拥有密钥的项目的项目 ID。KEY_LOCATION
:密钥环的位置。KEY_RING
:包含密钥的密钥环的名称。KEY_NAME
:密钥的名称。
如果您的配置文件包含其他设置,请勿修改这些设置。配置文件中的任何修改或移除操作也会修改相应的集群级设置。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
配置节点完整性和安全启动
您只能使用节点自动预配配置文件为自动创建的节点池启用安全启动和完整性监控功能。
在配置文件中指定
shieldedInstanceConfig
字段:shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true
如果您的配置文件包含其他设置,请勿修改这些设置。配置文件中的任何修改或移除操作也会修改相应的集群级设置。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
配置节点自动修复和自动升级
您可以修改自动创建的节点池中的节点自动修复和节点自动升级设置。在所有 GKE 集群和节点池中,这些功能默认处于启用状态。我们建议您保持启用这些功能,以提高集群的可靠性和稳定性。
如需更改节点自动修复和节点自动升级设置,请选择以下选项之一:
ComputeClass
在 ComputeClass 清单中,使用
spec.nodePoolConfig
字段中的autoRepair
字段和autoUpgrade
字段。GKE 1.34.0-gke.2201000 版及更高版本中提供了这些字段。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: nodePoolConfig: autoRepair: true autoUpgrade: true priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。
gcloud
如需在命令行中启用自动修复和自动升级设置,请使用
--enable-autoprovisioning-autorepair
和--enable-autoprovisioning-autoupgrade
标志:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-autorepair \ --enable-autoprovisioning-autoupgrade
如需在命令行中停用自动修复和自动升级设置,请使用
--no-enable-autoprovisioning-autorepair
和--no-enable-autoprovisioning-autoupgrade
标志:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --no-enable-autoprovisioning-autorepair \ --no-enable-autoprovisioning-autoupgrade
如需使用配置文件修改节点自动修复和自动升级设置,请按以下步骤操作:
在配置文件中指定
management.autoRepair
和management.autoUpgrade
字段:management: autoRepair: true autoUpgrade: true
如果您的配置文件包含其他设置,请勿修改这些设置。配置文件中的任何修改或移除操作也会修改相应的集群级设置。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
配置超额配置升级设置
您可以在自动创建的节点池中指定超额配置升级设置。超额配置升级是默认的 GKE 节点升级策略。如需更改超额配置升级设置,您必须配置集群级节点自动预配。
如需在命令行中指定超额配置升级设置,请使用
--autoprovisioning-max-surge-upgrade
和--autoprovisioning-max-unavailable-upgrade
标志:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade=MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade=MAX_UNAVAILABLE
替换以下内容:
MAX_SURGE
:升级期间可以添加到节点池的节点数上限。MAX_UNAVAILABLE
:升级期间在节点池中可能同时无法使用的节点数上限。
如需使用配置文件指定超额配置升级设置,请按以下步骤操作:
在配置文件中指定
upgradeSettings.maxSurgeUpgrade
和upgradeSettings.maxUnavailableUpgrade
字段:upgradeSettings: maxSurgeUpgrade: MAX_SURGE maxUnavailableUpgrade: MAX_UNAVAILABLE
如果您的配置文件包含其他设置,请勿修改这些设置。配置文件中的任何修改或移除操作也会修改相应的集群级设置。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
您指定的超额配置升级设置仅在集群使用超额配置升级来升级自动创建的节点池时适用。如需将节点升级策略切换为为新自动创建的节点池使用超额配置升级,请运行以下命令:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--enable-autoprovisioning-surge-upgrade
当您切换升级策略时,GKE 会使用您之前为该升级策略配置的所有设置。
对新自动创建的节点池使用蓝绿升级
您可以将节点升级策略切换为蓝绿升级,以用于所有新自动创建的节点池,并调整蓝绿升级的默认设置。如需更改升级策略,您必须配置集群级节点自动预配。您所做的任何更改仅适用于新自动创建的节点池。您还可以更新现有自动创建的节点池以使用蓝绿升级。
如需使用蓝绿升级和 GKE 默认设置来创建新的自动创建的节点池,请运行以下命令:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade
如需使用蓝绿升级并为新自动创建的节点池配置您自己的默认设置,请运行以下命令:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade \ --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \ --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
替换以下内容:
NODE_POOL_SOAK_DURATION
:GKE 在排空蓝色池中的所有节点批次后,等待删除蓝色池的时长(以秒为单位)。默认值为3600
。BATCH_NODE_COUNT
:蓝色池排空阶段要批量排空的节点数。默认值为1
。如果您指定的值为0
,GKE 会跳过蓝色池排空阶段。BATCH_SOAK_DURATION
:GKE 在上一次排空操作完成后等待开始批量排空操作的时长(以秒为单位)。默认值为0
。
配置自定义节点启动磁盘
如需指定 GKE 附加到自动创建的节点池中每个节点虚拟机的启动磁盘的类型和大小,请选择以下选项之一:
ComputeClass
在 ComputeClass 的
spec.priorities.storage
字段中使用bootDiskType
和bootDiskSize
字段:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE - machineFamily: n4d storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
替换以下内容:
BOOT_DISK_TYPE
:要用作节点启动磁盘的磁盘类型。您指定的值必须受 GKE 为相应优先级规则使用的 Compute Engine 机器类型支持。该值必须为以下值之一:pd-balanced
:平衡 Persistent Disk。pd-standard
:标准 Persistent Disk。pd-ssd
:性能 (SSD) Persistent Disk。hyperdisk-balanced
:Google Cloud Hyperdisk Balanced。
BOOT_DISK_SIZE
:节点启动磁盘的大小(以 GiB 为单位)。最小值为10
。
将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。
gcloud
在配置文件中,指定
diskSizeGb
和diskType
字段:diskSizeGb: BOOT_DISK_SIZE diskType: BOOT_DISK_TYPE
替换以下内容:
BOOT_DISK_TYPE
:要用作节点启动磁盘的磁盘类型。您指定的值必须受 GKE 为相应优先级规则使用的 Compute Engine 机器类型支持。该值必须为以下值之一:pd-balanced
:平衡 Persistent Disk。pd-standard
:标准 Persistent Disk。pd-ssd
:性能 (SSD) Persistent Disk。hyperdisk-balanced
:Google Cloud Hyperdisk Balanced。
BOOT_DISK_SIZE
:节点启动磁盘的大小(以 GiB 为单位)。最小值为10
。
如果您的配置文件包含其他设置,请勿修改这些设置。配置文件中的任何修改或移除操作也会修改相应的集群级设置。
通过为新集群或现有集群指定
--autoprovisioning-config-file
标志和--enable-autoprovisioning
标志,向 GKE 提供配置文件:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
替换以下内容:
CLUSTER_NAME
:集群的名称。PATH_TO_CONFIGURATION_FILE
:配置文件的路径。
GKE 会为系统功能和临时存储空间预留一部分节点启动磁盘。如需了解详情,请参阅由节点启动磁盘支持的临时存储空间。
为常见场景配置自动创建的节点池
以下部分介绍了如何针对某些常见的 GKE 用例请求自动创建的节点池。如需详细了解其他使用场景和支持的配置,请参阅针对您的特定使用场景的文档。
选择机器系列或机器类型
如需选择受支持的 Compute Engine 机器系列或机器类型,请选择以下选项之一:
ComputeClass
在 ComputeClass 清单中,在
spec.priorities
字段中指定以下任一字段。您可以在同一 ComputeClass 清单中同时指定这两个字段,但不能在同一优先级规则中指定。如需选择机器系列,请在优先级规则中指定
machineFamily
字段:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: MACHINE_SERIES whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
将
MACHINE_SERIES
替换为 Compute Engine 机器系列,例如n4
。如需选择机器类型,请在优先级规则中指定
machineType
字段:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineType: MACHINE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
将
MACHINE_TYPE
替换为 Compute Engine 机器类型,例如c4-standard-96
。在 GKE 1.33.2-gke.1111000 及更高版本中,您还可以在此字段中指定自定义机器类型。
您无法在同一优先级规则中同时指定
machineFamily
字段和machineType
字段。将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。
Pod 规范
在 Pod 清单中,选择以下节点标签之一:
如需选择机器系列,请使用
cloud.google.com/machine-family
节点标签:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
将
MACHINE_SERIES
替换为 Compute Engine 机器系列,例如n4
。如需选择预定义机器类型,请使用
cloud.google.com/machine-family
和node.kubernetes.io/instance-type
节点标签:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES node.kubernetes.io/instance-type: MACHINE_TYPE containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
将
MACHINE_TYPE
替换为指定机器系列中的 Compute Engine 机器类型。例如,如果您为MACHINE_SERIES
指定n4
,则可以为MACHINE_TYPE
指定n4-standard-80
。在 GKE 1.33.2-gke.1111000 版中,您还可以在此字段中指定自定义机器类型。
创建 Pod:
kubectl apply -f PATH_TO_POD_MANIFEST
将
PATH_TO_POD_MANIFEST
替换为 Pod 清单的路径。
选择 GPU
如需为自动创建的节点池请求 GPU,请选择以下选项之一:
ComputeClass
在 ComputeClass 清单中,指定
spec.priorities.gpu
字段:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - gpu: type: GPU_TYPE count: GPU_COUNT driverVersion: DRIVER_VERSION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true
替换以下内容:
GPU_TYPE
:要附加的 GPU 类型,例如nvidia-l4
。GPU_COUNT
:要连接到每个节点的 GPU 数量。此值必须至少为1
。DRIVER_VERSION
:要安装的 GPU 驱动程序版本。此值必须为default
或latest
。此字段需要 GKE 1.31.1-gke.1858000 或更高版本。
将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。在 GPU 工作负载中选择 ComputeClass,如以下示例所示:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/compute-class: nvidia-l4-class containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: 1
Pod 规范
如需在 Pod 规范中选择 GPU,您必须配置集群级节点自动预配并为该 GPU 类型设置资源限制。如需配置 GPU 资源限制并在 Pod 中选择 GPU,请按以下步骤操作:
- 按照为节点池自动创建配置资源限制部分中的说明,为您要使用的 GPU 配置集群级资源限制。
在 Pod 规范中使用节点标签选择 GPU:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/gke-accelerator: GPU_TYPE cloud.google.com/gke-accelerator-count: GPU_COUNT cloud.google.com/gke-gpu-driver-version: DRIVER_VERSION containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: GPU_QUANTITY
替换以下内容:
GPU_TYPE
:要附加的 GPU 类型,例如nvidia-l4
。GPU_COUNT
:要连接到每个节点的 GPU 数量。此值必须至少为1
。DRIVER_VERSION
:要安装的 GPU 驱动程序版本。此值必须为default
或latest
。在 GKE 1.32.2-gke.1297000 版及更高版本中,GKE 会自动安装default
驱动程序版本。此节点标签需要 GKE 1.29.2-gke.1108000 版或更高版本。如需了解详情,请参阅将节点自动预配与 GPU 搭配使用来安装驱动程序。GPU_QUANTITY
:要挂接到 Pod 的 GPU 数量。此值必须小于或等于GPU_COUNT
的值。
选择 TPU
您可以在 ComputeClass 或 Pod 规范中请求 TPU。 本部分假设您熟悉 Cloud TPU 选择,并且知道要使用的 TPU 类型、拓扑和数量。您需要遵循的步骤取决于您选择 TPU 的方式:
- ComputeClasses:请参阅使用自定义计算类预配 TPU。
- Pod 规范:
- 按照为节点池自动创建配置资源限制部分中的说明,为要使用的 TPU 配置集群级资源限制。
- 按照在 TPU 切片节点上运行工作负载中的说明,在 Pod 规范中配置选择器和资源请求。
限制自动创建的节点的运行时间
您可以指定一个最长时长,之后 GKE 会终止自动创建的节点。此时间限制需遵循 Compute Engine 限制。
从下列选项中选择一项:
ComputeClass
在 ComputeClass 清单中,使用
spec.priorities.maxRunDurationSeconds
字段。GKE 1.32.1-gke.1159000 版及更高版本支持此字段。apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machine-family: n4 maxRunDurationSeconds: MAX_RUN_DURATION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true
将
MAX_RUN_DURATION
替换为自动创建的节点在被 GKE 终止之前可以运行的时间(以秒为单位)。将 ComputeClass 清单应用于集群:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
将
PATH_TO_COMPUTECLASS_MANIFEST
替换为 ComputeClass 清单文件的路径。
Pod 规范
在 Pod 清单中,使用节点选择器选择
cloud.google.com/gke-max-run-duration-seconds
节点标签。此节点标签在 GKE 1.31.2-gke.1518000 及更高版本中可用。apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: n4 cloud.google.com/gke-max-run-duration-seconds: MAX_RUN_DURATION containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
将
MAX_RUN_DURATION
替换为自动创建的节点在被 GKE 终止之前可以运行的时间(以秒为单位)。创建 Pod:
kubectl apply -f PATH_TO_POD_MANIFEST
将
PATH_TO_POD_MANIFEST
替换为 Pod 清单的路径。
指定满足最低要求的 CPU 平台
节点自动预配功能支持创建指定了满足最低要求的 CPU 平台的节点池。您可以在工作负载级别(推荐)或集群级别指定满足最低要求的 CPU 平台。
停用节点池自动创建功能
以下部分介绍了如何为特定节点池或整个集群停用节点池自动创建功能。您还可以在 ComputeClass 中指定 ComputeClass 的 nodePoolAutoCreation.enabled
字段中的值为 false
,以停用节点池自动创建功能。不过,我们不建议您停用 ComputeClass 的自动创建功能,因为自动创建是 ComputeClass 的主要优势,可让您使用主动迁移和回退优先级等功能。
为特定节点池停用自动创建功能
您可以停止让 GKE 管理自动创建的现有节点池中的节点。此操作会产生以下影响:
- 集群自动扩缩器会停止在该节点池中创建或删除节点。如果您希望 GKE 自动扩缩节点,可以单独为该节点池启用集群自动扩缩器。
- 当节点数为零时,GKE 不会删除节点池。
- GKE 会继续将待处理的 Pod 放置在该节点池中具有可用性的现有节点上。如果集群仍启用节点自动预配,GKE 还可以根据需要为待处理的 Pod 创建新的节点池。
如需为特定节点池停用自动创建功能,请运行以下命令:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning
为集群停用节点自动预配功能
您可以停用节点自动预配集群设置,从而为整个集群停用节点池自动创建功能。此操作会产生以下影响:
- 集群自动扩缩器会停止在现有自动创建的节点池中创建和删除节点。使用集群自动调节程序的任何手动创建的节点池不受影响。
- GKE 不会自动为待处理的工作负载创建新的节点池。监控集群,以免出现卡住的 Pod。
如果集群满足以下要求,GKE 会继续为启用自动创建功能的 ComputeClass 创建新的节点池:
- 使用 GKE 1.33.3-gke.1136000 版或更高版本。
- 已在快速发布渠道中注册。
如果集群不满足这些要求,GKE 就不会为启用自动创建功能的 ComputeClass 创建新的节点池。
如果您稍后重新启用集群级节点自动预配设置,GKE 不会重新启用现有节点池上的节点池自动创建功能。您必须将各个节点池标记为自动创建。
如需停用集群级节点自动预配设置,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往 Kubernetes 集群页面:
点击要修改的集群的名称。系统会打开集群详情页面。
点击详情标签页。
在自动化部分的节点自动预配行中,点击修改。系统会显示修改节点自动预配窗格。
取消选中启用节点自动配置功能复选框。
点击保存更改。
gcloud
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning