要升级 Tanzu Kubernetes Grid (TKG),请在用作引导计算机的计算机上下载并安装新版本的 Tanzu CLI。还必须下载并安装基础映像模板和虚拟机,具体取决于要升级之前部署到 vSphere、Amazon Web Services (AWS) 或 Azure 的集群。
注意在 TKG 升级途径中,v2.3 紧跟 v2.2。
安装新版本的组件后,可以使用 tanzu mc upgrade
和 tanzu cluster upgrade
CLI 命令升级管理集群和工作负载集群。
接下来几节是升级 Tanzu Kubernetes Grid 所需的整体步骤。此过程假定您要升级到 Tanzu Kubernetes Grid v2.3.1。
仅当执行从 Tanzu Kubernetes Grid v2.2.x 到 v2.3.x 的次要版本升级时,才需要执行某些步骤;如果要执行从 Tanzu Kubernetes Grid v2.3.x 到 v2.3.y 的修补程序升级,则不需要执行某些步骤。
重要Tanzu Kubernetes Grid v2.4.x 是支持升级 AWS 和 Azure 上的现有独立 TKG 管理集群和 TKG 工作负载集群的最新 TKG 版本。Tanzu Kubernetes Grid v2.5 版本中将移除升级 AWS 和 Azure 上的独立 TKG 管理集群和 TKG 工作负载集群的功能。
从现在开始,VMware 建议您使用 Tanzu Mission Control 创建本机 AWS EKS 和 Azure AKS 集群。但是,在 AWS 和 Azure 上升级现有的独立 TKG 管理集群和 TKG 工作负载集群仍完全支持 TKG v2.4.x 及以下所有 TKG 版本。
有关详细信息,请参见《VMware Tanzu Kubernetes Grid v2.4 发行说明》中的弃用 AWS 和 Azure 上的 TKG 管理和工作负载集群。
升级到 TKG v2.3.x 之前,请确保当前部署为 TKG v2.2.x 或更早的 v2.3 版本。要从低于 v2.2 的 TKG 版本升级到 v2.3.x,必须先使用 v2.2.x 版本的 Tanzu CLI 升级到 v2.2.x。
从主要 v2.2.x 到 v2.3.x 的升级以及从 v2.3.x 到 v2.3.y 的修补程序升级都需要执行此步骤。
要下载并安装新版本的 Tanzu CLI,请执行以下步骤。
删除 ~/.config/tanzu/tkg/compatibility/tkg-compatibility.yaml
文件。
如果不删除此文件,新版本的 Tanzu CLI 将继续使用先前版本的物料清单 (BOM)。删除此文件会导致 Tanzu CLI 提取更新的 BOM。从 2.2.x 升级到 2.3.x 以及从 2.3.x 升级到 2.3.y 时,必须执行此步骤。
按照安装 Tanzu CLI 和 Kubernetes CLI 以与独立管理集群配合使用中的说明在当前运行 tanzu
命令的计算机上下载并安装 Tanzu CLI 和 kubectl
。如果任何独立管理集群配置为使用 LDAP 身份提供程序,请在安装 Tanzu CLI 之后执行(仅限 LDAP)更新 LDAP 设置中的步骤,然后再将 CLI 插件更新为 Tanzu Kubernetes Grid v2.3。
tanzu version
以检查是否正确安装了正确版本的 Tanzu CLI。有关与 Tanzu Kubernetes Grid v2.3 兼容的 CLI 版本列表,请参见产品互操作性矩阵。kubectl
后,运行 kubectl version
以检查是否正确安装了 kubectl
的正确版本。有关 Tanzu CLI 命令和可用选项的信息,请参见 Tanzu CLI 命令参考。
升级管理集群和工作负载集群之前,必须执行准备步骤,具体取决于是在 vSphere、AWS 还是 Azure 上部署集群。从主要 v2.2.x 到 v2.3.x 的升级以及从 v2.3.x 到 v2.3.y 的修补程序升级都需要执行此步骤。
此过程假定您要升级到 Tanzu Kubernetes Grid v2.3.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 产品互操作性矩阵。
tanzu mc permissions aws set
命令以重置 AWS 帐户中的权限,然后才能升级管理集群。
tanzu mc permissions aws set
从主要 v2.2.x 到 v2.3.x 的升级或从 v2.3.x 到 v2.3.y 的修补程序升级都需要执行此步骤。有关命令设置的 AWS 权限的详细信息,请参见需要的 AWS 权限。
包含受支持 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.3.1 ( k8s-1dot26dot8-ubuntu-2004
) 中默认虚拟机映像的条款,请运行:
az vm image terms accept --urn vmware-inc:tkg-capi:k8s-1dot26dot8-ubuntu-2004:2021.05.17
如果计划将任何工作负载集群升级到非默认 Kubernetes 版本(如 v1.25.13 或 v1.24.17),请接受要用于集群虚拟机的每个非默认版本的条款。
仅具有独立管理集群的 TKG 需要执行此步骤。如果运行具有 vSphere with Tanzu 主管的 TKG,请作为 vSphere 的一部分升级主管,并通过升级其 TKr 更新主管的 Kubernetes 版本。
从主要 v2.2.x 到 v2.3.x 的升级以及从 v2.3.x 到 v2.3.y 的修补程序升级都需要执行此步骤。
要升级 Tanzu Kubernetes Grid,必须升级部署中的所有管理集群。在升级管理工作负载集群的管理集群之前,无法升级工作负载集群。
按照升级独立管理集群中的过程升级管理集群。
从主要 v2.2.x 到 v2.3.x 的升级以及从 v2.3.x 到 v2.3.y 的修补程序升级都需要执行此步骤。
按照升级工作负载集群中的过程升级正在运行工作负载的工作负载集群。
升级集群后,还需要执行一些其他步骤以完成升级过程。
默认情况下安装在管理集群中的某些软件包(例如,cert-manager
)可以在工作负载集群和共享服务集群中作为 CLI 管理的软件包进行安装。将管理集群升级到最新的 Tanzu Kubernetes Grid 版本后,其默认软件包将自动更新。
您可以在不同的工作负载集群中运行不同版本的 CLI 管理的软件包。在工作负载集群中,您可以运行最新受支持的 CLI 管理的软件包版本或先前安装的两个 Tanzu Kubernetes Grid 版本中的软件包版本。例如,如果最新打包版本的 cert-manager
为 v1.11.1 并且先前两个 Tanzu Kubernetes Grid 安装运行的是 cert-manager
v1.10.1 和 v1.7.2,则可以在工作负载集群中运行 cert-manager
版本 v1.11.1、v1.10.1 和 v1.7.2。
对于运行的软件包版本比管理集群中的软件包版本早 n-2 个安装的 Tanzu Kubernetes Grid 版本的任何工作负载集群,必须更新软件包存储库(请参见更新软件包存储库),然后在工作负载集群中升级软件包(请参见更新软件包)。如果不升级软件包版本,您将无法更新软件包配置,因为软件包存储库可能不包含超过 n-2 的较旧软件包版本。
重要如果已在工作负载集群上安装 Prometheus,并将工作负载集群升级到 Kubernetes v1.25,则必须将 Prometheus 升级到最新版本
2.37.0+vmware.3-tkg.1
。Prometheus 软件包的早期版本(例如版本2.37.0+vmware.1-tkg.1
)与 Kubernetes 1.25 不兼容。
根据集群是在 vSphere、AWS 还是 Azure 上运行,在升级集群后必须执行某些操作。
如果在 TKG v2.2 安装中未启用 NSX ALB,请参见安装和配置 NSX Advanced Load Balancer,了解有关如何安装 NSX ALB 的信息。
如果在 TKG v2.2 安装中启用了 NSX ALB,请参见《Tanzu Kubernetes Grid v2.3 发行说明》,此版本支持 Avi 控制器版本,并根据需要将 Avi 控制器升级到兼容版本。有关如何升级 Avi 控制器,请参见 Avi Vantage 的灵活升级。
TKG v2.2 及更高版本会在新创建的工作负载集群上自动安装 AWS EBS CSI 驱动程序,但要在从 v2.1 升级的集群上运行 AWS EBS CSI,必须手动安装该驱动程序。按照以下过程在 TKG v2.1 或更低版本中创建且从未安装 AWS EBS CSI 驱动程序的集群上手动安装 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
TKG v2.1 及更高版本会在新创建的工作负载集群上自动安装 Azure Disk CSI 驱动程序,但要在从 v1.6 升级的集群上运行 Azure Disk CSI,必须手动安装该驱动程序。按照以下过程在 TKG v1.6 或更低版本中创建且从未安装 Azure Disk CSI 驱动程序的集群上手动安装 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.3+ 后按照此过程安装 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
从主要 v2.2.x 到 v2.3.x 的升级以及从 v2.3.x 到 v2.3.y 的修补程序升级都需要执行此步骤。
有关如何升级崩溃恢复和诊断的信息,请参见安装或升级崩溃恢复和诊断二进制文件。
检查升级的管理集群或在 Tanzu Mission Control 中注册它们。请参见检查并注册新部署的独立管理集群。