升级 Tanzu Kubernetes Grid

要升级 Tanzu Kubernetes Grid (TKG),请在用作引导计算机的计算机上下载并安装新版本的 Tanzu CLI。还必须下载并安装基础映像模板和虚拟机,具体取决于要升级之前部署到 vSphere、Amazon Web Services (AWS) 或 Azure 的集群。

注意

在 TKG 升级途径中,v2.1 紧跟 v1.6。TKG 2.0 不是可下载的版本,而是使用 vSphere 8 中 vSphere with Tanzu 主管中嵌入的 TKG 版本。

安装新版本的组件后,可以使用 tanzu mc upgradetanzu cluster upgrade CLI 命令升级管理集群和工作负载集群。

接下来几节是升级 Tanzu Kubernetes Grid 所需的整体步骤。此过程假定您要升级到 Tanzu Kubernetes Grid v2.1。

仅当执行从 Tanzu Kubernetes Grid v1.6.x 到 v2.1.x 的次要升级时,才需要执行某些步骤;如果要执行从 Tanzu Kubernetes Grid v2.1.x 到 v2.1.y 的修补程序升级,则不需要执行某些步骤。

必备条件

升级到 TKG v2.1.x 之前,请确保当前部署为 TKG v1.6.x 或更早的 v2.1 版本。要从低于 v1.6 的 TKG 版本升级到 v2.1.x,必须先使用 v1.6.x 的 Tanzu CLI 升级到 v1.6.x。

重要

与 vSphere 8 中的 TKG 2.x 和 vSphere with Tanzu 主管兼容的 Tanzu CLI 版本与 vSphere 7 中的主管集群不兼容。要在 vSphere 7 上对 vSphere with Tanzu 主管集群使用 Tanzu CLI,请使用 TKG v1.6 中的 Tanzu CLI 版本。要使用与具有主管的 TKG 2.x 兼容的 Tanzu CLI 版本,请升级到 vSphere 8。如果 vSphere with Tanzu 主管集群不存在,可以将独立 TKG 2.x 管理集群部署到 vSphere 7。有关 Tanzu CLI 与 VMware 产品之间兼容性的信息,请参见 Tanzu CLI 文档

下载并安装新版本的 Tanzu CLI

从主要 v1.6.x 到 v2.1.x 的升级以及从 v2.1.x 到 v2.1.y 修补程序升级都需要完成此步骤。

要下载并安装新版本的 Tanzu CLI,请执行以下步骤。

  1. 删除 ~/.config/tanzu/tkg/compatibility/tkg-compatibility.yaml 文件。

    如果不删除此文件,新版本的 Tanzu CLI 将继续使用先前版本的物料清单 (BOM)。删除此文件会导致 Tanzu CLI 提取更新的 BOM。从 1.6.x 升级到 2.1.x 以及从 2.1.x 升级到 2.1.y 时,必须执行此步骤。

  2. 按照 安装 Tanzu CLI 和其他工具以与独立管理集群配合使用中的说明在当前运行 tanzu 命令的计算机上下载并安装 Tanzu CLI 和 kubectl

  3. 安装新版本的 Tanzu CLI 后,运行 tanzu version 以检查是否正确安装了正确版本的 Tanzu CLI。Tanzu Kubernetes Grid v2.1.1 基于 Tanzu Framework v0.28.1 使用 Tanzu CLI v0.28.1。
  4. 安装 kubectl 后,运行 kubectl version 以检查是否正确安装了 kubectl 的正确版本。

有关 Tanzu CLI 命令和可用选项的信息,请参见 Tanzu CLI 命令参考

准备升级集群

升级管理集群和工作负载集群之前,必须执行准备步骤,具体取决于是在 vSphere、AWS 还是 Azure 上部署集群。从主要 v1.6.x 到 v2.1.x 的升级以及从 v2.1.x 到 v2.1.y 修补程序升级都需要完成此步骤。

vSphere
必须先将已升级的管理集群和工作负载集群将运行的基础映像模板导入 vSphere 新版本的基础映像模板,然后才能在 vSphere 上升级 Tanzu Kubernetes Grid 部署。VMware 会为每个受支持的操作系统和 Kubernetes 版本以 OVA 格式发布基础映像模板。导入 OVA 后,必须将生成的虚拟机转换为虚拟机模板。

此过程假定您要升级到 Tanzu Kubernetes Grid v2.1.x。

  1. 转到 Tanzu Kubernetes Grid 下载页面,然后使用您的 VMware Customer Connect 凭据登录。
  2. 下载管理集群和工作负载集群正在运行的操作系统和 Kubernetes 版本系列的最新 Tanzu Kubernetes Grid OVA。

    例如,对于 Photon v3 映像:

    • Kubernetes v1.24.10:Photon v3 Kubernetes v1.24.10 OVA
    • Kubernetes v1.23.16:Photon v3 Kubernetes v1.23.16 OVA
    • Kubernetes v1.22.17:Photon v3 Kubernetes v1.22.17 OVA

    对于 Ubuntu 20.04 映像:

    • Kubernetes v1.24.10:Ubuntu 2004 Kubernetes v1.24.10 OVA
    • Kubernetes v1.23.16:Ubuntu 2004 Kubernetes v1.23.16 OVA
    • Kubernetes v1.22.17:Ubuntu 2004 Kubernetes v1.22.17 OVA
    重要

    确保在使用安全修补程序版本时下载最新的 OVA 基础映像模板。您可以在 Tanzu Kubernetes Grid 产品下载页面上找到更新后其中包含安全修补程序的基础映像模板。

  3. 在 vSphere Client 中,右键单击 vCenter Server 清单中的对象,然后选择部署 OVF 模板 (Deploy OVF template)
  4. 选择 本地文件 (Local File),单击按钮以上载文件,然后导航到本地计算机上下载的 OVA 文件。
  5. 按照安装程序提示从 OVA 部署虚拟机。

    • 接受或修改设备名称.
    • 选择目标数据中心或文件夹。
    • 选择目标主机、集群或资源池。
    • 接受最终用户许可协议 (EULA)。
    • 选择磁盘格式和目标数据存储。
    • 选择虚拟机要连接的网络。
  6. 单击完成 (Finish) 以部署虚拟机。
  7. OVA 部署完成后,右键单击虚拟机,然后选择模板 (Template) > 转换为模板 (Convert to Template)
  8. 虚拟机和模板 (VMs and Templates) 视图中,右键单击新模板,选择添加权限 (Add Permission),然后将 Tanzu Kubernetes Grid 用户(例如,tkg-user)分配给具有 Tanzu Kubernetes Grid 角色的模板,例如 TKG。您已在 准备将管理集群部署到 vSphere 中创建了此用户和角色。

对下载了 OVA 文件的每个 Kubernetes 版本重复此过程。

VMware Cloud on AWS SDDC 兼容性

如果要升级在 VMware Cloud on AWS 上部署的工作负载集群,请确认现有部署使用的底层软件定义的数据中心 (SDDC) 版本与要升级到的 Tanzu Kubernetes Grid 版本兼容。

要查看 SDDC 的版本,请在 VMware Cloud 控制台中的 SDDC 磁贴上选择查看详细信息 (View Details),然后单击支持 (Support) 窗格。

要验证与 Tanzu Kubernetes Grid 的兼容性,请参见 VMware 产品互操作性矩阵

AWS
从主要 v1.6.x 到 v2.1.x 的升级以及从 v2.1.x 到 v2.1.y 的修补程序升级都不需执行特定操作。

包含受支持 Kubernetes 版本的 Amazon 2 Amazon 计算机映像 (AMI) 将公开提供给所有受支持 AWS 区域中的所有 AWS 用户。Tanzu Kubernetes Grid 会自动为升级期间指定的 Kubernetes 版本使用相应的 AMI。

Azure
在 Azure 上升级 Tanzu Kubernetes Grid 部署之前,您必须接受新默认虚拟机映像以及计划用于集群虚拟机的每个非默认虚拟机映像的条款。您需要为每个订阅接受一次这些条款。

要接受条款,请执行以下操作:

  1. 列出 Azure 应用商店中 Tanzu Kubernetes Grid 的所有可用虚拟机映像:

    az vm image list --publisher vmware-inc --offer tkg-capi --all
    
  2. 接受新默认虚拟机映像的条款:

    az vm image terms accept --urn publisher:offer:sku:version
    

    例如,要接受 Tanzu Kubernetes Grid v2.1.x (k8s-1dot24dot10-ubuntu-2004) 中默认虚拟机映像的条款,请运行:

    az vm image terms accept --urn vmware-inc:tkg-capi:k8s-1dot24dot10-ubuntu-2004:2021.05.17
    
  3. 如果计划将任何工作负载集群升级到非默认 Kubernetes 版本(如 v1.23.16 或 v1.22.17),请接受要用于集群虚拟机的每个非默认版本的条款。


升级独立管理集群

仅具有独立管理集群的 TKG 需要执行此步骤。如果运行具有 vSphere with Tanzu 主管的 TKG,请作为 vSphere 的一部分升级主管,并通过升级其 TKr 更新主管的 Kubernetes 版本。

从主要 v1.6.x 到 v2.1.x 的升级以及从 v2.1.x 到 v2.1.y 修补程序升级都需要完成此步骤。

要升级 Tanzu Kubernetes Grid,必须升级部署中的所有管理集群。在升级管理工作负载集群的管理集群之前,无法升级工作负载集群。

按照升级独立管理集群中的过程升级管理集群。

升级工作负载集群

从主要 v1.6.x 到 v2.1.x 的升级以及从 v2.1.x 到 v2.1.y 修补程序升级都需要完成此步骤。

按照升级工作负载集群中的过程升级正在运行工作负载的工作负载集群。

升级后操作

升级集群后,还需要执行一些其他步骤以完成升级过程。

同步早于 n-2 的软件包版本

默认情况下安装在管理集群中的某些软件包(例如,cert-manager)可以在工作负载集群和共享服务集群中作为 CLI 管理的软件包进行安装。将管理集群升级到最新的 Tanzu Kubernetes Grid 版本后,其默认软件包将自动更新。

您可以在不同的工作负载集群中运行不同版本的 CLI 管理的软件包。在工作负载集群中,您可以运行最新受支持的 CLI 管理的软件包版本或先前安装的两个 Tanzu Kubernetes Grid 版本中的软件包版本。例如,如果最新的打包版本 cert-manager 为 v1.10.1,并且先前的两个 Tanzu Kubernetes Grid 安装运行 cert-manager v1.7.2 和 v1.5.3,则可以在工作负载集群中运行 cert-manager 版本 v1.10.1、v1.7.2 和 v1.5.3。

对于运行的软件包版本比管理集群中的软件包版本早 n-2 个安装的 Tanzu Kubernetes Grid 版本的任何工作负载集群,必须更新软件包存储库(请参见更新软件包存储库),然后在工作负载集群中升级软件包(请参见更新软件包)。如果不升级软件包版本,您将无法更新软件包配置,因为软件包存储库可能不包含超过 n-2 的较旧软件包版本。

提供程序特定的升级后操作

根据集群是在 vSphere、AWS 还是 Azure 上运行,在升级集群后必须执行某些操作。

vSphere
Tanzu Kubernetes Grid 升级后升级 NSX Advanced Load Balancer 配置

如果在 TKG v1.6 安装中未启用 NSX ALB,请参见安装和配置 NSX Advanced Load Balancer,了解有关如何安装 NSX ALB 的信息。

如果在 TKG v1.6 安装中启用了 NSX ALB,请参见《Tanzu Kubernetes Grid v2.1 发行说明》,此版本支持 Avi 控制器版本,并根据需要将 Avi 控制器升级到兼容版本。有关如何升级 Avi 控制器,请参见 Avi Vantage 的灵活升级

AWS
在 Tanzu Kubernetes Grid 升级后安装 AWS CSI 驱动程序

如果集群在之前未安装,请在将 Tanzu Kubernetes Grid 安装升级到 v2.1+ 后按照此过程安装 AWS EBS CSI 驱动程序。

  1. 授予 AWS EBS CSI 驱动程序的权限:

    export AWS_REGION={YOUR_AWS_REGION}
    tanzu mc permissions aws set
    
  2. 对于使用 CSI 存储的每个工作负载集群:

    1. 导出以下环境变量并设置功能标记:

      export _TKG_CLUSTER_FORCE_ROLE="management"
      export FILTER_BY_ADDON_TYPE="csi/aws-ebs-csi-driver"
      export NAMESPACE="tkg-system"
      export DRY_RUN_MODE="legacy"
      tanzu config set features.cluster.allow-legacy-cluster true
      

      在上面的示例中,将 NAMESPACE 设置为集群的命名空间 tkg-system

    2. 生成 CSI 驱动程序清单:

      tanzu cl create ${TARGET_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
      

      其中,TARGET_CLUSTER_NAME 是在其上安装 CSI 驱动程序的集群的名称。

    3. 使用工作负载集群的命名空间更新 csi-driver-addon-manifest.yaml 中元数据中的密钥命名空间。使用 kubectl get cluster -A 命令查看集群的命名空间。

    4. 在管理集群的上下文中应用更改:

      kubectl apply -f csi-driver-addon-manifest.yaml
      
    5. 取消设置以下环境变量和功能标记:

      unset _TKG_CLUSTER_FORCE_ROLE
      unset FILTER_BY_ADDON_TYPE
      unset NAMESPACE
      unset DRY_RUN_MODE
      tanzu config set features.cluster.allow-legacy-cluster false
      
  3. 对于使用 CSI 存储的管理集群:

    1. 导出以下环境变量:

      export _TKG_CLUSTER_FORCE_ROLE="management"
      export FILTER_BY_ADDON_TYPE="csi/aws-ebs-csi-driver"
      export NAMESPACE="tkg-system"
      export DRY_RUN_MODE="legacy"
      tanzu config set features.cluster.allow-legacy-cluster true
      

      在上面的示例中,将 NAMESPACE 设置为集群的命名空间 tkg-system

    2. 生成 CSI 驱动程序清单:

      tanzu mc create ${MANAGEMENT_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
      

      其中,MANAGEMENT_CLUSTER_NAME 是管理集群的名称。

    3. 使用管理集群的命名空间更新 csi-driver-addon-manifest.yaml 中元数据中的密钥命名空间。使用 kubectl get cluster -A 命令查看集群的命名空间。

    4. 在管理集群的上下文中应用更改:

      kubectl apply -f csi-driver-addon-manifest.yaml
      
    5. 取消设置以下环境变量和功能标记:

      unset _TKG_CLUSTER_FORCE_ROLE
      unset FILTER_BY_ADDON_TYPE
      unset NAMESPACE
      unset DRY_RUN_MODE
      tanzu config set features.cluster.allow-legacy-cluster false
      
Azure
Tanzu Kubernetes Grid 升级后安装 Azure Disk CSI 驱动程序

如果集群在之前未安装,请在将 Tanzu Kubernetes Grid 安装升级到 v2.1+ 后按照此过程安装 Azure Disk CSI 驱动程序。

  1. 导出以下环境变量并设置功能标记:

    export _TKG_CLUSTER_FORCE_ROLE="management"
    export FILTER_BY_ADDON_TYPE="csi/azuredisk-csi-driver"
    export NAMESPACE="tkg-system"
    export DRY_RUN_MODE="legacy"
    tanzu config set features.cluster.allow-legacy-cluster true
    

    在上面的示例中,将 NAMESPACE 设置为集群的命名空间 tkg-system

  2. 对于使用 CSI 存储的每个工作负载集群:

    1. 生成 CSI 驱动程序清单:

      tanzu cl create ${TARGET_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
      

      其中,TARGET_CLUSTER_NAME 是在其上安装 CSI 驱动程序的集群的名称。

    2. 使用工作负载集群的命名空间更新 csi-driver-addon-manifest.yaml 中元数据中的密钥命名空间。使用 kubectl get cluster -A 命令查看集群的命名空间。

    3. 在管理集群的上下文中应用更改:

      kubectl apply -f csi-driver-addon-manifest.yaml
      
    4. 取消设置以下环境变量和功能标记:

      unset _TKG_CLUSTER_FORCE_ROLE
      unset FILTER_BY_ADDON_TYPE
      unset NAMESPACE
      unset DRY_RUN_MODE
      tanzu config set features.cluster.allow-legacy-cluster false
      
  3. 对于使用 CSI 存储的管理集群:

    1. 导出以下环境变量:

      export _TKG_CLUSTER_FORCE_ROLE="management"
      export FILTER_BY_ADDON_TYPE="csi/azuredisk-csi-driver"
      export NAMESPACE="tkg-system"
      export DRY_RUN_MODE="legacy"
      tanzu config set features.cluster.allow-legacy-cluster true
      

      在上面的示例中,将 NAMESPACE 设置为集群的命名空间 tkg-system

    2. 生成 CSI 驱动程序清单:

      tanzu mc create ${MANAGEMENT_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
      

      其中,MANAGEMENT_CLUSTER_NAME 是管理集群的名称。

    3. 使用管理集群的命名空间更新 csi-driver-addon-manifest.yaml 中元数据中的密钥命名空间。使用 kubectl get cluster -A 命令查看集群的命名空间。

    4. 在管理集群的上下文中应用更改:

      kubectl apply -f csi-driver-addon-manifest.yaml
      
    5. 取消设置以下环境变量和功能标记:

      unset _TKG_CLUSTER_FORCE_ROLE
      unset FILTER_BY_ADDON_TYPE
      unset NAMESPACE
      unset DRY_RUN_MODE
      tanzu config set features.cluster.allow-legacy-cluster false
      

Tanzu Kubernetes Grid 升级后安装 Azure File CSI 驱动程序

如果集群在之前未安装,请在将 Tanzu Kubernetes Grid 安装升级到 v2.1+ 后按照此过程安装 Azure File CSI 驱动程序。

  1. 导出以下环境变量并设置功能标记:

    export _TKG_CLUSTER_FORCE_ROLE="management"
    export FILTER_BY_ADDON_TYPE="csi/azurefile-csi-driver"
    export NAMESPACE="tkg-system"
    export DRY_RUN_MODE="legacy"
    tanzu config set features.cluster.allow-legacy-cluster true
    

    在上面的示例中,将 NAMESPACE 设置为集群的命名空间 tkg-system

  2. 对于使用 CSI 存储的每个工作负载集群:

    1. 生成 CSI 驱动程序清单:

      tanzu cl create ${TARGET_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
      

      其中,TARGET_CLUSTER_NAME 是在其上安装 CSI 驱动程序的集群的名称。

    2. 使用工作负载集群的命名空间更新 csi-driver-addon-manifest.yaml 中元数据中的密钥命名空间。使用 kubectl get cluster -A 命令查看集群的命名空间。

    3. 在管理集群的上下文中应用更改:

      kubectl apply -f csi-driver-addon-manifest.yaml
      
    4. 取消设置以下环境变量和功能标记:

      unset _TKG_CLUSTER_FORCE_ROLE
      unset FILTER_BY_ADDON_TYPE
      unset NAMESPACE
      unset DRY_RUN_MODE
      tanzu config set features.cluster.allow-legacy-cluster false
      
  3. 对于使用 CSI 存储的管理集群:

    1. 导出以下环境变量:

      export _TKG_CLUSTER_FORCE_ROLE="management"
      export FILTER_BY_ADDON_TYPE="csi/azurefile-csi-driver"
      export NAMESPACE="tkg-system"
      export DRY_RUN_MODE="legacy"
      tanzu config set features.cluster.allow-legacy-cluster true
      

      在上面的示例中,将 NAMESPACE 设置为集群的命名空间 tkg-system

    2. 生成 CSI 驱动程序清单:

      tanzu mc create ${MANAGEMENT_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
      

      其中,MANAGEMENT_CLUSTER_NAME 是管理集群的名称。

    3. 使用管理集群的命名空间更新 csi-driver-addon-manifest.yaml 中元数据中的密钥命名空间。使用 kubectl get cluster -A 命令查看集群的命名空间。

    4. 在管理集群的上下文中应用更改:

      kubectl apply -f csi-driver-addon-manifest.yaml
      
    5. 取消设置以下环境变量和功能标记:

      unset _TKG_CLUSTER_FORCE_ROLE
      unset FILTER_BY_ADDON_TYPE
      unset NAMESPACE
      unset DRY_RUN_MODE
      tanzu config set features.cluster.allow-legacy-cluster false
      


升级崩溃恢复和诊断

从主要 v1.6.x 到 v2.1.x 的升级以及从 v2.1.x 到 v2.1.y 修补程序升级都需要完成此步骤。

有关如何升级崩溃恢复和诊断的信息,请参见安装或升级崩溃恢复和诊断二进制文件

下一步操作

检查升级的管理集群或在 Tanzu Mission Control 中注册它们。请参见检查并注册新部署的独立管理集群

check-circle-line exclamation-circle-line close-line
Scroll to top icon