要升级 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 upgrade
和 tanzu 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 文档。
从主要 v1.6.x 到 v2.1.x 的升级以及从 v2.1.x 到 v2.1.y 修补程序升级都需要完成此步骤。
要下载并安装新版本的 Tanzu CLI,请执行以下步骤。
删除 ~/.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 时,必须执行此步骤。
按照 安装 Tanzu CLI 和其他工具以与独立管理集群配合使用中的说明在当前运行 tanzu
命令的计算机上下载并安装 Tanzu CLI 和 kubectl
。
tanzu version
以检查是否正确安装了正确版本的 Tanzu CLI。Tanzu Kubernetes Grid v2.1.1 基于 Tanzu Framework v0.28.1 使用 Tanzu CLI v0.28.1。kubectl
后,运行 kubectl version
以检查是否正确安装了 kubectl
的正确版本。有关 Tanzu CLI 命令和可用选项的信息,请参见 Tanzu CLI 命令参考。
升级管理集群和工作负载集群之前,必须执行准备步骤,具体取决于是在 vSphere、AWS 还是 Azure 上部署集群。从主要 v1.6.x 到 v2.1.x 的升级以及从 v2.1.x 到 v2.1.y 修补程序升级都需要完成此步骤。
此过程假定您要升级到 Tanzu Kubernetes Grid v2.1.x。
下载管理集群和工作负载集群正在运行的操作系统和 Kubernetes 版本系列的最新 Tanzu Kubernetes Grid OVA。
例如,对于 Photon v3 映像:
对于 Ubuntu 20.04 映像:
重要确保在使用安全修补程序版本时下载最新的 OVA 基础映像模板。您可以在 Tanzu Kubernetes Grid 产品下载页面上找到更新后其中包含安全修补程序的基础映像模板。
按照安装程序提示从 OVA 部署虚拟机。
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 产品互操作性矩阵。
包含受支持 Kubernetes 版本的 Amazon 2 Amazon 计算机映像 (AMI) 将公开提供给所有受支持 AWS 区域中的所有 AWS 用户。Tanzu Kubernetes Grid 会自动为升级期间指定的 Kubernetes 版本使用相应的 AMI。
要接受条款,请执行以下操作:
列出 Azure 应用商店中 Tanzu Kubernetes Grid 的所有可用虚拟机映像:
az vm image list --publisher vmware-inc --offer tkg-capi --all
接受新默认虚拟机映像的条款:
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
如果计划将任何工作负载集群升级到非默认 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 修补程序升级都需要完成此步骤。
按照升级工作负载集群中的过程升级正在运行工作负载的工作负载集群。
升级集群后,还需要执行一些其他步骤以完成升级过程。
默认情况下安装在管理集群中的某些软件包(例如,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 上运行,在升级集群后必须执行某些操作。
如果在 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 的灵活升级。
如果集群在之前未安装,请在将 Tanzu Kubernetes Grid 安装升级到 v2.1+ 后按照此过程安装 AWS EBS CSI 驱动程序。
授予 AWS EBS CSI 驱动程序的权限:
export AWS_REGION={YOUR_AWS_REGION}
tanzu mc permissions aws set
对于使用 CSI 存储的每个工作负载集群:
导出以下环境变量并设置功能标记:
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
。
生成 CSI 驱动程序清单:
tanzu cl create ${TARGET_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,TARGET_CLUSTER_NAME
是在其上安装 CSI 驱动程序的集群的名称。
使用工作负载集群的命名空间更新 csi-driver-addon-manifest.yaml
中元数据中的密钥命名空间。使用 kubectl get cluster -A
命令查看集群的命名空间。
在管理集群的上下文中应用更改:
kubectl apply -f csi-driver-addon-manifest.yaml
取消设置以下环境变量和功能标记:
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
对于使用 CSI 存储的管理集群:
导出以下环境变量:
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
。
生成 CSI 驱动程序清单:
tanzu mc create ${MANAGEMENT_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,MANAGEMENT_CLUSTER_NAME
是管理集群的名称。
使用管理集群的命名空间更新 csi-driver-addon-manifest.yaml
中元数据中的密钥命名空间。使用 kubectl get cluster -A
命令查看集群的命名空间。
在管理集群的上下文中应用更改:
kubectl apply -f csi-driver-addon-manifest.yaml
取消设置以下环境变量和功能标记:
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 安装升级到 v2.1+ 后按照此过程安装 Azure Disk CSI 驱动程序。
导出以下环境变量并设置功能标记:
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
。
对于使用 CSI 存储的每个工作负载集群:
生成 CSI 驱动程序清单:
tanzu cl create ${TARGET_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,TARGET_CLUSTER_NAME
是在其上安装 CSI 驱动程序的集群的名称。
使用工作负载集群的命名空间更新 csi-driver-addon-manifest.yaml
中元数据中的密钥命名空间。使用 kubectl get cluster -A
命令查看集群的命名空间。
在管理集群的上下文中应用更改:
kubectl apply -f csi-driver-addon-manifest.yaml
取消设置以下环境变量和功能标记:
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
对于使用 CSI 存储的管理集群:
导出以下环境变量:
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
。
生成 CSI 驱动程序清单:
tanzu mc create ${MANAGEMENT_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,MANAGEMENT_CLUSTER_NAME
是管理集群的名称。
使用管理集群的命名空间更新 csi-driver-addon-manifest.yaml
中元数据中的密钥命名空间。使用 kubectl get cluster -A
命令查看集群的命名空间。
在管理集群的上下文中应用更改:
kubectl apply -f csi-driver-addon-manifest.yaml
取消设置以下环境变量和功能标记:
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 驱动程序。
导出以下环境变量并设置功能标记:
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
。
对于使用 CSI 存储的每个工作负载集群:
生成 CSI 驱动程序清单:
tanzu cl create ${TARGET_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,TARGET_CLUSTER_NAME
是在其上安装 CSI 驱动程序的集群的名称。
使用工作负载集群的命名空间更新 csi-driver-addon-manifest.yaml
中元数据中的密钥命名空间。使用 kubectl get cluster -A
命令查看集群的命名空间。
在管理集群的上下文中应用更改:
kubectl apply -f csi-driver-addon-manifest.yaml
取消设置以下环境变量和功能标记:
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
对于使用 CSI 存储的管理集群:
导出以下环境变量:
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
。
生成 CSI 驱动程序清单:
tanzu mc create ${MANAGEMENT_CLUSTER_NAME} --dry-run -f ~/MANAGEMENT_CLUSTER_CREATE_CONFIG.yaml > csi-driver-addon-manifest.yaml
其中,MANAGEMENT_CLUSTER_NAME
是管理集群的名称。
使用管理集群的命名空间更新 csi-driver-addon-manifest.yaml
中元数据中的密钥命名空间。使用 kubectl get cluster -A
命令查看集群的命名空间。
在管理集群的上下文中应用更改:
kubectl apply -f csi-driver-addon-manifest.yaml
取消设置以下环境变量和功能标记:
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 中注册它们。请参见检查并注册新部署的独立管理集群。