将更新应用于现有节点池


本页面介绍如何动态更新现有 Google Kubernetes Engine (GKE) 节点池的网络标记、节点标签和现有节点池节点污点。

概览

网络标记是 Compute Engine 虚拟机上的元数据,可让您将防火墙规则和路由应用于特定虚拟机实例。节点污点标签位于 Kubernetes 节点的对象元数据中。标签用于在特定节点上调度 Pod,在这些节点上可以使用污点来引导 Pod 离开这些节点。

使用 Kubernetes Engine API,您可以对现有 GKE 节点池的网络标记、节点标签和节点污点应用更新,而无需重新创建节点池或中断正在运行的工作负载。更新后的节点池配置会保留在 GKE 中,因此未来的节点池升级和节点池中的新节点预配将使用新的配置。

限制

使用 Kubernetes Engine API 动态更新节点池配置存在一些限制:

  • 节点池的版本必须高于 1.19.7-gke.1500。
  • 不能在启用了自动扩缩的节点池中使用节点污点和标签的更新。如需解决此问题,您可以首先在节点池中停用自动扩缩功能,然后再尝试更新节点池标签或污点。 更新标签或污点后,请重新启用自动扩缩功能。如果您只想更新网络标记,则无需停用自动扩缩功能。

更新网络标记

如需更新节点池的网络标记,请使用以下命令:

gcloud beta container node-pools update NODEPOOL_NAME \
    --tags=[TAG1,TAG2,...] \
    [--cluster=CLUSTER_NAME] [--region=REGION | --zone=ZONE]
    [GCLOUD_WIDE_FLAG …]

请替换以下内容:

更新节点标签

如需更新节点池的节点标签,请使用以下命令:

gcloud beta container node-pools update NODEPOOL_NAME \
    --node-labels=[NODE_LABEL,...] \
    [--cluster=CLUSTER_NAME] [--region=REGION | --zone=ZONE]
    [GCLOUD_WIDE_FLAG …]

请替换以下内容:

  • NODEPOOL_NAME:要更新的节点池的名称。
  • [NODE_LABEL,...]:所需的新节点标签(例如 label1=value1,label2=value2)。
  • CLUSTER_NAME:集群的名称。
  • REGION:集群的 Compute Engine 区域
  • ZONE:集群的 Compute Engine 可用区

更新节点污点

如需更新节点池的节点污点,请使用以下命令:

gcloud beta container node-pools update NODEPOOL_NAME \
    --node-taints=[NODE_TAINT,...] \
    [--cluster=CLUSTER_NAME] [--region=REGION | --zone=ZONE]
    [GCLOUD_WIDE_FLAG …]

请替换以下内容:

  • NODEPOOL_NAME:要更新的节点池的名称。
  • [NODE_TAINT,...]:所需的新节点污点(例如 key1=val1:NoSchedule,key2=val2:PreferNoSchedule)。
  • CLUSTER_NAME:集群的名称。
  • REGION:集群的 Compute Engine 区域
  • ZONE:集群的 Compute Engine 可用区

后续步骤