配置节点升级策略


作为平台管理员,您可以配置节点升级策略,以调整 GKE 升级 Google Kubernetes Engine (GKE) 集群中节点的方式。如需详细了解节点升级策略,请参阅节点升级策略

准备工作

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。

配置节点升级策略

配置集群的节点池时,您可以选择和配置其中一个受支持的节点升级策略,即超额配置蓝绿策略。通过使用这些升级策略,您可以根据集群环境的需求优化节点池升级过程。

配置超额配置升级

借助超额配置升级,您可以更改 GKE 同时升级的节点数以及升级对工作负载造成的中断时长。

我们为每个节点池定义了 max-surge-upgrademax-unavailable-upgrade 标志。如需详细了解如何选择正确的参数,请参阅优化超额配置升级配置

您可以在创建或更新集群或节点池时更改这些设置。

以下变量将用于下文提到的命令:

  • CLUSTER_NAME:节点池的集群名称。
  • COMPUTE_ZONE:集群的区域。
  • NODE_POOL_NAME:节点池的名称。
  • NUMBER_NODES:每个集群的区域的节点池中的节点数。
  • SURGE_NODES:每次升级节点池时要创建的额外(超额配置)节点的数量。
  • UNAVAILABLE_NODES:是每次升级节点池时不可用的节点数。

创建具有特定超额配置参数的集群

如需创建具有特定超额配置升级设置的集群,请使用 max-surge-upgrademax-unavailable-upgrade 标志。

gcloud container clusters create CLUSTER_NAME \
    --max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES

创建停用超额配置升级的集群

如需创建停用超额配置升级的集群,请将 max-surge-upgrade 标志的值设置为 0

gcloud container clusters create CLUSTER_NAME \
    --max-surge-upgrade=0 --max-unavailable-upgrade=1

创建具有特定超额配置参数的节点池

如需在现有集群中创建具有特定超额配置升级设置的节点池,请使用 max-surge-upgrademax-unavailable-upgrade 标志。

gcloud container node-pools create NODE_POOL_NAME \
    --num-nodes=NUMBER_NODES --cluster=CLUSTER_NAME \
    --max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES

更改现有节点池的超额配置升级设置

如需更新现有节点池的升级设置,请使用 max-surge-upgrademax-unavailable-upgrade 标志。如果将 max-surge-upgrade 设置为大于 0,则 GKE 会创建超额配置节点。如果将 max-surge-upgrade 设置为 0,则 GKE 不会创建超额配置节点。

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES

检查节点池上是否启用了超额配置升级

如需查看节点池上是否启用了超额配置升级,请使用 gcloud 描述集群的参数:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

如果节点池上启用了超额配置升级,则列出的策略为 SURGE

配置蓝绿升级

通过蓝绿节点池升级,您可以控制:

  • BATCH_NODE_COUNTBATCH_PERCENT:GKE 一次排空的批次大小,这意味着 Pod 会从节点中移除。默认值为 BATCH_NODE_COUNT=1。 如果其中任何一个设置为 0,GKE 会跳过此阶段并进入过渡节点池阶段。
  • BATCH_SOAK_DURATION:每批节点之间的排空时间。
  • NODE_POOL_SOAK_DURATION:您在新节点配置上验证工作负载的过渡时间。

如需详细了解蓝绿升级阶段的工作原理,请参阅蓝绿升级阶段

以下变量将用于后续部分列出的命令:

  • CLUSTER_NAME:节点池的集群名称。
  • NODE_POOL_NAME:节点池的名称。
  • NUMBER_NODES:每个集群的区域的节点池中的节点数。
  • BATCH_NODE_COUNT:蓝色池排空阶段要批量排空的蓝色节点的数量。默认值为 1。如果设置为 0,则将跳过蓝色池排空阶段。
  • BATCH_PERCENT:蓝色池排空阶段要批量排空的蓝色节点的百分比,以 0 到 1 之间的小数形式(含 0 和 1)表示。如果百分比不是整数节点数,则 GKE 向下取整到最近的节点,最小值为 1 个节点。如果设置为 0,则将跳过蓝色池排空阶段。
  • BATCH_SOAK_DURATION:每次批量排空后要等待的时长(以秒为单位)。默认值为 0。
  • NODE_POOL_SOAK_DURATION:完成所有批量排空后要等待的时长(以秒为单位)。默认值为 3600 秒。

使用蓝绿升级策略创建节点池

使用蓝绿升级默认参数创建节点池

要使用默认参数和蓝绿升级策略在现有集群中创建节点池,请使用以下命令:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade

使用绝对节点数计数批量大小创建蓝绿升级的节点池

要使用自定义蓝绿升级设置创建节点池,请将参数标志与节点池创建命令一起使用。

此命令使用以下自定义蓝绿配置创建节点池,该批次使用批量排空的绝对节点数:

  • BATCH_NODE_COUNT = 2
  • BATCH_SOAK_DURATION = 10 秒
  • NODE_POOL_SOAK_DURATION = 600 秒
gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-node-count=2,batch-soak-duration=10s \
    --node-pool-soak-duration=600s

使用基于百分比的批次大小创建进行蓝绿升级的节点池

此命令使用以下自定义蓝绿配置创建节点池,该批次使用批量排空百分比:

  • BATCH_PERCENTAGE = 25%(节点池大小)
  • BATCH_SOAK_DURATION = 10 秒
  • NODE_POOL_SOAK_DURATION = 1800 秒
gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-percent=0.25,batch-soak-duration=10s \
    --node-pool-soak-duration=1800s

更新现有节点池的蓝绿升级策略

使用蓝绿升级默认参数更新节点池

如需将现有节点池更新为蓝绿升级策略,请使用以下命令:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade

使用绝对节点数计数批次大小更新蓝绿升级的节点池

如需使用自定义设置将现有节点池更新为蓝绿升级策略,请在节点池创建命令中使用参数标志。

此命令通过使用批量排空的绝对节点数,更新节点池以使用以下自定义蓝绿配置:

  • BATCH_NODE_COUNT = 2
  • BATCH_SOAK_DURATION = 10 秒
  • NODE_POOL_SOAK_DURATION = 600 秒
gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-node-count=2,batch-soak-duration=10s \
    --node-pool-soak-duration=600s

使用基于百分比的批次大小更新使用蓝绿升级的节点池

此命令使用以下自定义蓝绿配置创建节点池,该批次使用批量排空百分比:

  • BATCH_PERCENTAGE = 25%(节点池大小)
  • BATCH_SOAK_DURATION = 10 秒
  • NODE_POOL_SOAK_DURATION = 1800 秒
gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-percent=0.25,batch-soak-duration=10s \
    --node-pool-soak-duration=1800s

切换回超额配置升级

您可以使用设置更改蓝绿升级的行为,并使用命令控制升级过程

但是,如果您要改用超额配置升级,请运行以下命令以切换回超额配置升级:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-surge-upgrade

检查节点池的升级设置

要检查节点池的当前升级设置,您可以使用以下命令来描述节点池:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

以下代码段是该命令的示例输出。strategy 字段表示正在使用的升级策略:SURGE 表示超额配置升级策略;BLUE_GREEN 表示已启用蓝绿升级策略。

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

此命令还会显示正在进行的蓝绿升级的当前阶段。详细了解如何检查节点池的升级设置

后续步骤