作为平台管理员,您可以配置节点升级策略,以调整 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-upgrade
和 max-unavailable-upgrade
标志。如需详细了解如何选择正确的参数,请参阅优化超额配置升级配置。
您可以在创建或更新集群或节点池时更改这些设置。
以下变量将用于下文提到的命令:
CLUSTER_NAME
:节点池的集群名称。COMPUTE_ZONE
:集群的区域。NODE_POOL_NAME
:节点池的名称。NUMBER_NODES
:每个集群的区域的节点池中的节点数。SURGE_NODES
:每次升级节点池时要创建的额外(超额配置)节点的数量。UNAVAILABLE_NODES
:是每次升级节点池时不可用的节点数。
创建具有特定超额配置参数的集群
如需创建具有特定超额配置升级设置的集群,请使用 max-surge-upgrade
和 max-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-upgrade
和 max-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-upgrade
和 max-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_COUNT
或BATCH_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
= 2BATCH_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
= 2BATCH_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
此命令还会显示正在进行的蓝绿升级的当前阶段。详细了解如何检查节点池的升级设置。