本页面介绍如何在 Google Kubernetes Engine 中配置节点自动升级功能。
概览
当系统为您更新控制层面时,节点自动升级功能可帮助您确保集群中的节点始终与集群控制层面(主服务器)版本保持同步。使用 Google Cloud Console 或 gcloud
命令创建新的集群或节点池时,系统会默认启用节点自动升级功能。
您可以详细了解集群和节点升级。
节点自动升级功能具有多项优势:
- 降低管理开销:当系统为您升级集群控制层面时,您再也不必手动跟踪并更新节点。
- 提高安全性:我们会不定时发布新的二进制文件来修复安全问题。有了自动升级功能,GKE 可自动确保安全更新功能得到应用并保持最新状态。
- 易用性:提供一种简单的方法,使您的节点始终使用最新版的 Kubernetes 功能。
如果启用了自动升级功能的节点池满足(版本说明中描述的)选择条件,则系统会安排其进行升级。发布过程会在几周内分阶段进行,以确保集群和机群的稳定性。 执行升级时,系统将排空并重新创建节点以与当前控制层面版本保持一致。在节点虚拟机的启动磁盘上进行的修改在重新创建节点后将不再保留。如需在重新创建节点后保留修改,请使用 DaemonSet。
Alpha 版集群无法使用节点自动升级功能。如果您使用的集群具有 Windows Server 节点池,请在启用节点自动升级功能之前查看升级 Windows Server 节点池。
检查现有节点池的自动升级状态
您可以使用 Google Cloud Console 或 gcloud
命令检查节点池是启用了还是停用了自动升级功能。
gcloud
如需检查节点池的自动升级状态,请运行以下命令:
gcloud container node-pools describe node-pool-name \
--cluster cluster-name \
--zone compute-zone
其中:
- node-pool-name 是节点池的名称。
- cluster-name 是包含节点池的集群的名称。
- compute-zone 是集群所在的区域。
控制台
如需检查节点池的自动升级状态,请执行以下操作:
访问 Cloud Console 中的 Google Kubernetes Engine 菜单。
点击集群的“修改”按钮(铅笔图案)。
在节点池部分中,选择要检查的节点池。
在管理部分下,查看自动升级字段的值。
为现有节点池启用节点自动升级功能
使用 Google Cloud Console 或 gcloud
命令创建新的集群时,系统会默认启用节点自动升级功能。
您可以启用节点自动升级功能(如果其当前处于停用状态)。
gcloud
要为现有节点池启用自动升级功能,请运行以下命令:
gcloud container node-pools update node-pool-name --cluster cluster-name \
--zone compute-zone --enable-autoupgrade
其中:
- node-pool-name 是节点池的名称。
- cluster-name 是包含节点池的集群的名称。
- compute-zone 是集群所在的区域。
控制台
如需为现有节点池启用自动升级功能,请执行以下步骤:
访问 Cloud Console 中的 Google Kubernetes Engine 菜单。
点击集群的“修改”按钮(铅笔图案)。
在节点池部分中,点击要修改的节点池的名称,然后点击修改。
选择启用自动升级。
点击保存,以修改集群。
如需对何时可以自动升级节点进行更多控制,请考虑配置维护期和排除项。
为现有节点池停用节点自动升级功能
如果底层集群当前未在发布版本中注册,您可以停用现有节点池的节点自动升级。如果您这样做,则需要负责确保集群的节点所运行的版本与集群的版本兼容。
gcloud
要停用现有节点池的自动升级功能,请运行以下命令:
gcloud container node-pools update node-pool-name --cluster cluster-name \ --zone compute-zone --no-enable-autoupgrade
控制台
如需停用现有节点池的自动升级功能,请执行以下步骤:
访问 Cloud Console 中的 Google Kubernetes Engine 菜单。
点击集群的“修改”按钮(铅笔图案)。
在节点池部分中,点击要修改的节点池的名称,然后点击修改。
清除启用自动升级。
点击保存,以修改集群。
将工作负载迁移到以前的节点版本(暂时缓解)
您无法降级节点池。但是,如需在节点池升级后降级到节点版本,请将以下准则用作暂时缓解措施,将工作负载迁移到所需的节点版本。
- 检查您的子网范围和 Pod IP 范围是否允许集群中的其他节点托管当前节点池当前托管的所有 Pod。查看子网范围的最大 Pod 数和最大节点数。
检查要迁移到的节点版本是否受支持。
检查节点是否具有
PodDisruptionBudget
的工作负载,这可能会降低工作负载的迁移速度。使用以前节点版本创建另一个节点池,以便具有容量(节点数)来托管当前节点池当前托管的所有 Pod。
使用
kubectl drain <nodename>
排空含最新版本的节点池上的节点,一次一个节点。确认节点上的 Pod 已移到新节点池(正在运行以前节点版本)上的节点。极其重要:确认所有 Pod 均已迁移到正在运行以前节点版本的节点池中的节点。
删除正在运行最新节点池版本的节点池(如果您不再需要)。
创建集群或节点池并启用节点自动升级功能
gcloud
如需为默认节点池创建集群并启用自动升级功能,请在 gcloud container clusters
create
命令中指定 --enable-autoupgrade
标志:
gcloud container clusters create cluster-name --zone compute-zone \ --enable-autoupgrade
如需创建节点池并启用自动升级功能,请执行以下操作:
gcloud container node-pools create node-pool-name --cluster cluster-name \ --zone compute-zone --enable-autoupgrade
控制台
使用 Cloud Console 创建的集群和节点池会默认启用自动升级功能。如需了解如何创建集群和节点池,请参阅创建集群或添加和管理节点池。
您可以为新节点池停用自动升级功能。在集群创建页面中,点击要修改的节点池的名称,然后清除启用自动升级。
更改超额配置升级参数
借助超额配置升级,您可以更改 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 beta 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
接收升级通知
GKE 将升级通知发布到 Pub/Sub,为您提供了一个渠道,接收来自 GKE 的关于您的集群的信息。
如需了解详情,请参阅接收集群升级通知。
后续步骤
- 详细了解节点池。
- 详细了解集群和节点池升级。
- 手动升级集群或节点池。