本文档介绍了如何使用 GKE API 更新 Google Kubernetes Engine (GKE) Standard 集群中现有节点池的 Kubernetes 节点标签和节点污点。Kubernetes 节点标签与 GKE 集群和节点标签有所不同。
节点污点和标签位于 Kubernetes 节点的对象元数据中。Kubernetes 标签用于将 Pod 调度到特定节点。相比之下,污点可用于引导 Pod 避开特定节点。如需了解详情,请参阅在 GKE 中配置工作负载隔离。
使用 GKE API,您可以对现有 GKE 节点池的 Kubernetes 节点标签和节点污点应用更新,而无需重新创建节点池和中断正在运行的工作负载。更新后的节点池配置会保留在 GKE 中,因此未来的节点池升级和节点池中预配的新节点将使用新的配置。
如需详细了解更改如何影响 GKE 集群的运行,请参阅管理集群生命周期更改,以最大限度地减少中断。如需详细了解具体更改,请参阅对 GKE 集群的更改类型部分。
标签语法
Kubernetes 标签必须满足以下所有要求:
- 标签键和值必须满足语法和字符集的要求。
- 您在
--node-labelsgcloud CLI 标志中指定的值的长度不得超过 1,024 个字符。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。如果您之前安装了 gcloud CLI,请通过运行
gcloud components update命令来获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。
更新节点标签
如需更新节点池的节点标签,请使用以下命令:
gcloud container node-pools update NODEPOOL_NAME \
--node-labels=[NODE_LABEL,...] \
--cluster=CLUSTER_NAME
--location=CONTROL_PLANE_LOCATION
[GCLOUD_WIDE_FLAG …]
替换以下内容:
NODEPOOL_NAME:要更新的节点池的名称。[NODE_LABEL,...]:新节点标签(例如label1=value1,label2=value2)。CLUSTER_NAME:集群的名称。CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 位置。为区域级集群提供区域,或为可用区级集群提供可用区。
更新节点污点
如需更新节点池的节点污点,请使用以下命令:
gcloud container node-pools update NODEPOOL_NAME \
--node-taints=[NODE_TAINT,...] \
--cluster=CLUSTER_NAME
--location=CONTROL_PLANE_LOCATION
[GCLOUD_WIDE_FLAG …]
替换以下内容:
NODEPOOL_NAME:要更新的节点池的名称。[NODE_TAINT,...]:新的节点污点(例如key1=val1:NoSchedule,key2=val2:PreferNoSchedule)。CLUSTER_NAME:集群的名称。CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 位置。为区域级集群提供区域,或为可用区级集群提供可用区。
更新架构污点
与其他 GKE 管理的系统污点类似,Arm 节点上的架构污点(例如 kubernetes.io/arch=arm64:NoSchedule)的管理方式与自定义节点污点不同,无法使用前面所述的说明移除。不过,您可以修改架构污点。如需了解详情,请参阅配置默认 ARM 架构污染。