自动升级节点

本页面介绍如何在 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 是集群所在的区域。

控制台

如需检查节点池的自动升级状态,请执行以下操作:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

  2. 点击集群的“修改”按钮(铅笔图案)。

  3. 节点池部分中,选择要检查的节点池。

  4. 管理部分下,查看自动升级字段的值。

为现有节点池启用节点自动升级功能

使用 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 是集群所在的区域。

控制台

如需为现有节点池启用自动升级功能,请执行以下步骤:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

  2. 点击集群的“修改”按钮(铅笔图案)。

  3. 节点池部分中,点击要修改的节点池的名称,然后点击修改

  4. 选择启用自动升级

  5. 点击保存,以修改集群。

如需对何时可以自动升级节点进行更多控制,请考虑配置维护期和排除项

为现有节点池停用节点自动升级功能

您可以为现有节点池停用节点自动升级功能。如果您这样做,则需要负责确保集群的节点所运行的版本与集群的版本兼容。

gcloud

要停用现有节点池的自动升级功能,请运行以下命令:

gcloud container node-pools update node-pool-name --cluster cluster-name \
    --zone compute-zone --no-enable-autoupgrade

控制台

如需停用现有节点池的自动升级功能,请执行以下步骤:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

  2. 点击集群的“修改”按钮(铅笔图案)。

  3. 节点池部分中,点击要修改的节点池的名称,然后点击修改

  4. 清除启用自动升级

  5. 点击保存,以修改集群。

创建集群或节点池并启用节点自动升级功能

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-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 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 的关于您的集群的信息。

如需了解详情,请参阅接收集群升级通知

后续步骤