升级概览

本页面简要介绍了升级过程和版本偏差信息,这些信息可帮助您规划在多集群环境中升级集群的顺序。如需了解更详细的规划信息(包括有助于您规划升级的核对清单),请参阅升级最佳实践

升级序列

从 1.7 版开始,就地升级必须始终遵循特定升级序列:

  1. 升级管理员工作站。即使您计划使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 升级用户集群,我们也建议您这样做。

  2. 一次升级一个用户集群。在 1.14 及更高版本中,您可以选择独立于用户集群上的节点池升级用户集群的控制平面。如需了解您可能需要执行此操作的原因,请参阅用户集群升级

    当用户集群中的所有节点池与用户集群的控制平面版本相同后,用户集群便会完全升级。

    管理员集群的次要版本不得高于其管理的任何用户集群的次要版本。如果您的任何用户集群与管理员集群处于同一次要版本,则无法升级管理员集群。

  3. 当所有用户集群至少比管理员集群高一个次要版本时,您可以选择升级管理员集群。

在 1.28 及更高版本中,升级的版本偏差和版本规则已更改。如需了解详情,请参阅版本偏差

用户集群升级

升级用户集群时,您可以选择将用户集群整体升级(这意味着您可以升级控制平面以及集群中的所有节点池),也可以升级用户集群的控制平面并保留当前版本的节点池。具体采取哪种方法取决于多种因素,例如:

  • 集群所在的环境(生产或非生产)。
  • 维护窗口的长度。
  • 用户集群的版本。

例如,在开发环境中,您可能希望该过程保持简单,并升级用户集群的控制平面和所有节点池。但是,在维护窗口较短的生产环境中,您可能只想升级控制平面,因为升级控制平面所需的时间更少,并且使用高可用性 (HA) 控制平面,控制平面升级应该不会干扰用户工作负载。当控制平面为 1.28 版或更高版本时,您可以在升级节点池时跳过次要版本。

Ubuntu 和 COS 节点池支持独立于控制平面升级节点池,但不支持 Windows 节点池。

选择性地升级节点池

在某些情况下,您可能需要升级用户集群中的部分(而不是全部)节点池。例如,在升级控制平面后,您可以升级流量较少的节点池或运行最不重要的工作负载。在您确信自己的工作负载可在新版本上正常运行后,可以升级其他节点池,直到所有节点池都升级完毕。

选择用于升级用户集群的工具

Google Distributed Cloud 为您提供了多种用于升级用户集群的工具。

  • 命令行工具 gkectl,您可以在管理员工作站上运行。在升级之前,请修改用户集群配置文件,以便为集群控制平面和节点池(可选)设置目标版本。您可以在 gkectl 的命令行中指定此文件。

  • Google Cloud 控制台、Google Cloud CLI 或 Terraform(可从任何与 GKE On-Prem API 网络连接的计算机运行)。这些标准工具是 GKE On-Prem API 的客户端,该 API 在 Google Cloud 基础架构上运行。

    • 只有当您使用 Terraform 创建了用户集群时,才能使用 Terraform 进行升级。

    • 如果您的用户集群是使用 gkectl 创建的,则该集群必须在 GKE On-Prem API 中注册,才能使用控制台或 gcloud CLI 进行升级。在 1.16 及更高版本中,使用 gkectl 创建的集群默认会注册在 GKE On-Prem API 中。对于在早期版本中创建的集群,您可以在创建集群后注册集群

      即使您决定使用 gkectl 进行升级,也可能需要在 GKE On-Prem API 中注册集群,以使用控制台或 gcloud CLI 获取有关集群的信息。

您使用的工具取决于您计划如何升级用户集群:

  • 升级整个集群:您可以使用 gkectl、Google Cloud 控制台、Google Cloud CLI 或 Terraform 升级用户集群(控制平面以及所有节点池)。

  • 仅升级控制平面:您可以使用 gkectl、gcloud CLI 或 Terraform 独立于节点池升级用户集群的控制平面。控制台不支持仅升级控制平面。

  • 在控制平面升级后有选择地升级节点池:在控制平面升级后,您可以使用 gkectl、gcloud CLI 或 Terraform 升级特定节点池。

  • 同时升级控制平面和一个或多个节点池:只有 gkectl 支持此用例。

管理员集群升级

当所有用户集群上的控制平面和节点池至少比管理员集群高一个次要版本时,您可以选择升级管理员集群。只有 gkectl 支持升级管理员集群。GKE On-Prem API 客户端不支持升级管理员集群。

版本偏差

版本偏差是指管理员集群与其受管用户集群之间的次要版本之间的差异。在以下部分中,用户集群版本是指控制平面和节点池的总版本。

此外,版本偏差是指用户集群的控制平面与用户集群上的节点池之间的次要版本差异。

在多集群环境中,了解升级支持的版本偏差和版本规则可能有助于您规划集群的升级顺序。

管理员和用户集群版本偏差

管理员集群可以管理不同版本的用户集群。借助此功能,您可以按适合组织的时间表升级一组用户集群。

1.29 及更高版本

版本偏差与 1.28 中的相同。在 1.29 中,此功能已过渡到正式版阶段。

在 1.29 及更高版本中,用户集群最多可比管理员集群 2 个次要版本。例如,如果管理员集群位于 1.16,则由该管理员集群管理的用户集群可以为 1.16、1.28 或 1.29。

一般来说,如果 1.n 是管理员集群的次要版本,则用户集群可以位于 1.n1.n+11.n+2 级别。位于 1.n+2 的用户集群无法升级到下一个次要版本,除非管理员集群至少升级到一个次要版本。

1.28

在 1.28 版中,用户集群最多可比管理员集群高 2 个次要版本。例如,如果管理员集群为 1.15,则由该管理员集群管理的用户集群可以为 1.15、1.16 或 1.28。除非管理员集群至少升级到 1.16,否则 1.28 版的用户集群无法升级到 1.29。

1.16 及更低版本

在 1.16 及更低版本中,用户集群只能比管理员集群高 1 个次要版本。例如,如果管理员集群位于 1.15,则由该管理员集群管理的用户集群可以为 1.15 或 1.16。

一般来说,如果 1.n 是管理员集群的次要版本,则用户集群可以位于 1.n1.n+1。除非管理员集群与用户集群处于相同的次要版本,否则用户集群无法升级到下一个次要版本。

用户集群控制平面和节点池版本偏差

1.29 及更高版本

版本偏差与 1.28 中的相同。在 1.29 中,此功能已过渡到正式版阶段。

在 1.29 及更高版本中,用户集群的控制平面最多可比集群中的节点池 2 个次要版本。例如,如果用户集群的控制平面为 1.29,则集群中的节点池可以为 1.16、1.28 或 1.29。

一般来说,如果 1.n 是用户集群控制平面的次要版本,则集群中的节点池可能位于 1.n1.n-11.n-2。直到所有节点池的状态均为 1.n1.n-1 后,用户集群控制平面才能升级到下一个次要版本。

1.28

在 1.28 版中,用户集群的控制平面最多可比集群中的节点池 2 个次要版本。例如,如果用户集群的控制平面为 1.28,则集群中的节点池可以为 1.15、1.16 或 1.28。在所有节点池都处于 1.281.16 状态之前,用户集群控制平面无法升级到 1.29。

1.16 及更低版本

在 1.16 及更低版本中,用户集群的控制平面只能比集群中的节点池 1 个次要版本。例如,如果用户集群的控制平面为 1.16,则集群中的节点池可以为 1.15 或 1.16。

一般来说,如果 1.n 是用户集群控制平面的次要版本,则集群中的节点池可能位于 1.n1.n-1。除非所有节点池与控制平面的次要版本相同,否则用户集群无法升级到下一个次要版本。

管理员集群和用户集群控制平面升级的版本规则

管理员集群和用户集群控制平面升级的版本规则相同。您可以直接升级到同一次要版本或下一个次要版本中的任何版本。例如,您可以从 1.29.0 升级到 1.29.1,或者从 1.28.1 升级到 1.29.0。补丁版本不会影响升级版本规则。

如果您要升级到不属于下一个次要版本的版本,则必须从当前版本和目标版本之间升级到每个次要版本的一个版本。不支持跳过次要版本。例如,如果要从 1.16.x 版升级到 1.29.x 版,则无法直接升级。您必须先从 1.16.x 升级到 1.28.x,然后再升级到 1.29.x。

一般来说,管理员集群升级和用户集群控制平面升级仅支持从 1.n 升级到 1.n+1

节点池升级的版本规则

在 1.28 版及更高版本中,您可以在升级用户集群中的节点池时跳过一个次要版本。例如,如果用户集群控制平面为 1.29,节点池为 1.16,您可以跳过 1.28,直接将节点池升级到 1.29。补丁版本不会影响升级版本规则。

一般来说,如果用户集群控制平面位于 1.n,那么您可以将位于 1.n-2 的节点池直接升级到 1.n。在升级节点池时跳过一个次要版本可能会比进行两次节点池升级(从 1.n-2 升级到 1.n-1,然后再升级到 1.n)减少所需时间。这也是您可能希望与用户集群上运行的节点池分开升级用户集群的控制平面的另一个原因。

补丁版本升级

我们建议您尽可能升级到最新的补丁程序版本,以确保您的集群具有最新的安全修复程序。补丁版本不会影响版本偏差和升级规则。对于给定的次要版本,您可以升级到任何更高的补丁版本。也就是说,只要 Y 大于 X,您就可以将 1.29.X 版本集群升级到 1.29.Y 版本。例如,您可以从 1.28.0 升级到 1.28.1,也可以从 1.28.1 升级到 1.28.3

后续步骤

查看升级最佳实践并制定集群的升级计划。