升级概述

为 Google Distributed Cloud for VMware(纯软件)规划集群升级有助于您确定所需的升级顺序、选择兼容的管理工具,并最大限度地减少多集群环境中的工作负载中断。如需查看升级前准备工作核对清单,请参阅升级最佳实践。

版本、顺序和工具对升级的影响

升级集群的顺序、使用的工具以及必须执行的检查会因以下因素而有很大差异:

  • 您开始使用的版本
  • 您要升级到的版本
  • 您是从高级集群还是非高级集群升级
  • 您是升级到高级集群还是非高级集群
  • 用户集群上是否已启用 Controlplane V2

根据您开始使用的版本、升级集群的顺序、用于更新的工具、集群的版本以及您可以执行和无法执行的操作,这些操作会有很大差异。

检查集群是高级集群还是非高级集群

如需检查您的集群是高级集群还是非高级集群,请确定您使用的版本:

  • 如果您的集群使用 1.30 或更早版本,则它们是非高级集群。
  • 如果您的集群使用 1.33 版,并且您没有明确选择退出高级集群,则这些集群就是高级集群。
  • 如果您的集群使用 1.34 及更高版本,则它们是高级集群。

如果您的集群使用的是 1.31 和 1.32 版,请使用 kubectl 检查集群自定义资源,以确定集群是否为高级集群:

  1. 在管理员集群 kubeconfig 中,检查管理员集群的 enableAdvancedCluster 规范字段:

    kubectl get onpremadminclusters -A \
        -o custom-columns=NAME:.metadata.name,VERSION:.spec.gkeOnPremVersion,ADVANCED:.spec.enableAdvancedCluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    将 ADMIN_CLUSTER_KUBECONFIG 替换为用户集群 kubeconfig 文件的路径。

  2. 在管理员集群 kubeconfig 中,检查用户集群的 enableAdvancedCluster 规范字段:

    kubectl get onpremuserclusters -A \
        -o custom-columns=NAME:.metadata.name,VERSION:.spec.gkeOnPremVersion,ADVANCED:.spec.enableAdvancedCluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

启用高级集群后,输出类似于以下内容:

NAME              VERSION           ADVANCED
gke-admin-abc12   1.32.0-gke.1085   true

如果 ADVANCED 为 true,则表示该集群是高级集群。对于 1.32 版或更早版本,ADVANCED 可能会显示为 <none>。

简要升级流程

以下部分介绍了升级集群时的整体升级过程,具体取决于您要升级的集群类型。

在开始升级之前,请详细了解版本对升级的影响。如需查看按版本列出的依赖项的详细列表以及有关跳过版本和版本偏差规则的信息,请参阅升级版本规则。

高级集群与非高级集群

集群分为两种类型:高级集群和非高级集群。在 1.33 版或更高版本中创建的所有集群都是高级集群。高级集群采用改进的架构,可提供更高的灵活性和可伸缩性。

将集群升级为高级集群后,您将始终使用高级集群,并使用高级集群升级流程。只有在从 1.33 之前的版本升级时,集群是高级还是非高级才重要。

高级集群使用整合的 Google Distributed Cloud 架构,将 Google Distributed Cloud for Bare Metal(纯软件)用作 Google Distributed Cloud for VMware(纯软件)的底层框架。您可能会在节点标签、API 资源和系统标记中看到对“裸机”的引用。

高级集群功能实现了一种集群架构,可让 Google Distributed Cloud for VMware(纯软件)与其他 Google Distributed Cloud 产品更好地保持一致。启用了高级集群的集群与其他 Google Distributed Cloud 集群共享平台。此共享平台使用相同的控制器和代理,从而提高可靠性,并有助于 Google 提供更好的支持。启用高级集群后,集群操作的性能也得到了提升。

新架构提供与所有其他 Google Distributed Cloud 产品一致的体验和实现。如需详细了解高级集群与非高级集群可用的功能,请参阅高级集群功能支持。

从高级集群升级到高级集群(当前版本,从 1.31 开始)

在 1.32 版及更高版本中,从一个高级集群升级到另一个高级集群时,您可以执行补丁版本升级和依序次要版本升级。在 1.31 预览版中,您只能在 1.31 版中执行补丁版本升级。

如需执行此升级,您可以使用 gkectl CLI、Google Cloud CLI、 Google Cloud 控制台或 Terraform(具体取决于版本)。

如需从高级集群升级到高级集群,您必须遵循以下顺序:

  1. 升级管理员工作站(如果适用)。
  2. 使用 gkectl diagnose cluster 验证管理员集群是否健康。 解决所有问题。
  3. 升级管理员集群。
  4. 使用 gkectl diagnose cluster 验证升级是否成功以及用户集群是否正常运行。解决所有问题。
  5. 逐个升级用户集群。 您可以同时或单独升级用户集群控制平面和节点池。如需了解详情,请参阅升级节点池。
  6. 使用 gkectl diagnose cluster 验证升级是否成功。

当用户集群中的所有节点池都与用户集群的控制平面版本相同时,用户集群即已升级,升级完成。

用户集群的控制平面在用户集群本身上运行,并在用户集群升级期间升级。管理员集群控制平面节点在管理员集群升级期间升级。

如需详细了解如何使用 gkectl diagnose cluster 诊断集群,请参阅诊断集群。

如需了解如何将高级集群升级为高级集群,请参阅升级集群。

从非高级集群升级到高级集群

只有 1.31、1.32、1.33 和 1.34 版支持从非高级集群升级到高级集群。如需详细了解如何在这些版本中从非高级集群升级到高级集群,请参阅升级版本规则。

如需从非高级集群升级到高级集群,您必须使用与目标版本相同的 gkectl 版本(例如,如果您要升级到 1.32.0 版,则必须使用 gkectl 1.32.0 版),并遵循以下顺序:

  1. 升级管理员工作站和工件。
  2. 使用 gkectl diagnose cluster 验证管理员集群是否健康。 解决所有问题。
  3. 升级管理员集群。
  4. 使用 gkectl diagnose cluster 验证升级是否成功以及用户集群是否正常运行。解决所有问题。
  5. 升级用户集群。
  6. 使用 gkectl diagnose cluster 验证升级是否成功。

如需详细了解如何使用 gkectl diagnose cluster 诊断集群,请参阅诊断集群。

如需详细了解如何从非高级集群升级到高级集群,请参阅从非高级集群更新或升级到高级集群。

从非高级集群升级到非高级集群

对于 1.33 版及更低版本,您可以从非高级集群升级到另一个非高级集群。如需详细了解允许从非高级集群升级到另一个非高级集群的版本,请参阅升级版本规则。

升级非高级集群的顺序取决于目标版本:

  • 对于目标版本 1.31、1.32 和 1.33,您必须先升级管理员集群,然后再升级用户集群。
  • 对于目标版本 1.30 及更早版本,您必须先升级所有用户集群,然后再升级管理员集群。

升级到 1.31、1.32 或 1.33 版

如需升级到 1.31、1.32 或 1.33 版,同时让集群继续为非高级集群,您必须遵循以下顺序:

  1. 升级管理员工作站并准备软件包工件。
  2. 使用 gkectl diagnose cluster 验证管理员集群是否健康。 解决所有问题。
  3. 升级管理员集群。
  4. 使用 gkectl diagnose cluster 验证升级是否成功以及用户集群是否正常运行。解决所有问题。
  5. 逐个升级用户集群。
  6. 使用 gkectl diagnose cluster 验证升级是否成功。

升级到 1.30 版或更低版本

如需升级到 1.30 版或更早版本,您必须遵循以下顺序:

  1. 升级管理员工作站并准备软件包工件。
  2. 使用 gkectl diagnose cluster 验证用户集群是否健康。 解决所有问题。
  3. 逐个升级所有用户集群。
  4. 使用 gkectl diagnose cluster 验证升级是否成功以及管理员集群是否运行正常。解决所有问题。
  5. 升级管理员集群。
  6. 使用 gkectl diagnose cluster 验证升级是否成功。

如需详细了解如何使用 gkectl diagnose cluster 诊断集群,请参阅诊断集群。

如需详细了解如何从非高级集群升级到非高级集群,请参阅升级和维护非高级集群。

集群升级

您始终需要逐个升级管理员集群。

升级用户集群时,您可以升级整个用户集群(同时升级集群中的控制平面和所有节点池),也可以升级用户集群的控制平面,并将节点池保留为当前版本。您采用哪种方法取决于多种因素,例如:

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

例如,在开发环境中,您可能希望保持流程简单明了,同时升级用户集群的控制平面和所有节点池。但在维护窗口较短的生产环境中,您可能希望仅升级控制平面,因为这样可以节省时间,并且在高可用性 (HA) 控制平面中,控制平面升级不应中断用户工作负载。

选择用于升级集群的工具

您使用的工具取决于您计划升级的内容和方式。

对于管理员集群,您必须使用 gkectl 进行升级。

对于用户集群,您可以使用以下任一工具来升级集群:

  • gkectl 命令行工具(从非高级集群升级到高级集群时需要)
  • Terraform(如果您使用 Terraform 创建了用户集群)
  • Google Cloud 控制台
  • Google Cloud CLI

下表列出了哪些工具支持哪些应用场景。

升级用例 gkectl gcloud CLI 控制台 Terraform 注意事项和限制
升级管理员集群(任何路径) 是 否 否 否 管理员集群始终需要 gkectl。
将非高级集群升级为高级集群(转换) 是 否 否 否 gkectl 版本必须与目标版本一致;控制平面 (CP) 与节点池之间不允许存在版本偏差。
将非高级集群升级为非高级集群(旧版) 是 否 否 否 仅在 1.33 及更早版本中可用(选择退出路径);不支持 API 客户端。
升级用户集群:高级到高级 是 是 是 是1 适用标准版本偏差规则。
升级整个用户集群(控制平面和节点池一起升级) 是 是 是 是1 所有工具均支持高级用户集群。
单独升级用户集群控制平面(仅限 CP) 是 是 否 是1 控制台不支持仅升级控制平面。
在控制平面升级后选择性升级节点池 是 是 否 是1 控制台不支持单个节点池升级。
同时升级控制平面和一个或多个节点池 是 否 否 否 只有 gkectl 支持部分并发控制平面 + 节点池版本升级。

1 Terraform 要求:只有在用户集群最初是使用 Terraform 创建和管理的情况下,您才能使用 Terraform 进行用户集群升级。

如需使用控制台或 gcloud CLI 获取有关使用 gkectl 创建的集群的信息,请在 GKE On-Prem API 中注册集群。

后续步骤

查看升级版本规则,了解版本如何影响升级,并找到您当前版本和要升级到的版本的版本规则。

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