要升级具有独立管理集群的 Tanzu Kubernetes Grid,必须先升级独立管理集群。在升级管理工作负载集群的管理集群之前,无法升级工作负载集群。
如果运行具有 vSphere with Tanzu 主管的 TKG,则不会执行此过程。相反,您可以在 vSphere 中升级主管,并通过升级其 TKr 来更新主管的 Kubernetes 版本。
重要Tanzu Kubernetes Grid v2.4.x 是支持升级 AWS 和 Azure 上的现有独立 TKG 管理集群的最新 TKG 版本。Tanzu Kubernetes Grid v2.5 版本中将移除在 AWS 和 Azure 上升级独立 TKG 管理集群的功能。
VMware 建议您使用 Tanzu Mission Control 创建本机 AWS EKS 和 Azure AKS 集群。但是,在 AWS 和 Azure 上升级现有的独立 TKG 管理集群仍完全受 TKG v2.4.x 及以下版本支持。
有关详细信息,请参见《VMware Tanzu Kubernetes Grid v2.4 发行说明》中的弃用 AWS 和 Azure 上的 TKG 管理和工作负载集群。
升级管理集群会自动升级其运行的自动管理的软件包。
注意安装 Tanzu CLI 之后但在升级独立管理集群之前,所有上下文特定的 CLI 命令组 (
tanzu cluster
,tanzu kubernetes-release
) 不可用并且不包含在 Tanzu CLI--help
输出中。
管理集群和工作负载集群使用客户端证书对客户端进行身份验证。这些证书的有效期为一年。要续订集群,请至少每年升级一次集群,或者按照 续订集群证书(标准 Mc)或知识库文章如何在或 VMware 知识库文章如何在 Tanzu Kubernetes Grid 集群中轮转证书。
ClusterClass
定义,则您已执行升级自定义集群中的步骤。从 Tanzu Kubernetes Grid v2.3 开始,您必须在配置 LDAP 身份提供程序时设置 LDAP_BIND_DN
和 LDAP_BIND_PASSWORD
变量。在升级配置为使用 LDAP 身份提供程序到 Tanzu Kubernetes Grid v2.4 的管理集群之前,如果尚未设置这些变量,请进行设置。在未设置 LDAP_BIND_DN
和 LDAP_BIND_PASSWORD
的情况下升级管理集群会导致 Pinniped App
部署失败,并且 App
自定义资源返回错误。有关这些配置变量的详细信息,请参见《配置文件变量参考》中的身份供程序 - LDAP。
要更新 LDAP_BIND_DN
和 LDAP_BIND_PASSWORD
,必须使用与管理集群版本对应的 management-cluster
CLI 插件版本。升级管理集群之前,请执行以下步骤:
将 LDAP_BIND_DN
和 LDAP_BIND_PASSWORD
添加到管理集群的配置文件中。
确认在您的计算机上安装了正确版本的 management-cluster
插件。对于 Tanzu Kubernetes Grid v2.4.0,正确的版本为 v0.31.0
。
tanzu plugin list
如果未安装正确版本的 management-cluster
插件,请执行以下操作:
在所有可用版本的列表中,找到与管理集群版本对应的 management-cluster
插件的版本:
tanzu plugin search -n management-cluster --show-details
安装插件:
tanzu plugin install management-cluster --version PLUGIN-VERSION
其中,PLUGIN-VERSION
是在上一步中查找的版本。
通过运行以下命令为 Pinniped 软件包生成新密钥:
FILTER_BY_ADDON_TYPE=authentication/pinniped tanzu management-cluster create --dry-run -f YOUR-MANAGEMENT-CLUSTER-CONFIG-FILE.yaml > PINNIPED-PACKAGE-SECRET.yaml
其中,YOUR-MANAGEMENT-CLUSTER-CONFIG-FILE.yaml
是在上一步中更新的配置文件,PINNIPED-PACKAGE-SECRET.yaml
是 Pinniped 软件包的新密钥。
确认生成的密钥包括更新的设置,将 kubectl
上下文设置为管理集群,然后应用该密钥:
kubectl apply -f PINNIPED-PACKAGE-SECRET.yaml
运行 tanzu context use
命令以查看可用于升级的管理集群的交互式列表。
tanzu context use
选择要升级的管理集群。有关详细信息,请参见列出管理集群和更改上下文。
获取集群的管理员凭据。Tanzu CLI 别名 mc
是 management-cluster
的缩写。
tanzu mc kubeconfig get --admin
将 kubectl
连接到管理集群。
kubectl config use-context MGMT-CLUSTER-NAME-admin@MGMT-CLUSTER-NAME.
您可以从在上一步中运行 tanzu mc kubeconfig get --admin
命令的输出中复制确切的命令,包括管理集群上下文的名称。
如果管理集群正在 Azure 上运行,请在升级集群之前设置 AZURE_CLIENT_SECRET
环境变量:
export AZURE_CLIENT_SECRET=YOUR-AZURE-CLIENT-SECRET
运行 tanzu mc upgrade
命令并输入 y
进行确认。
注意运行此命令后,非管理员用户无法登录到关联的工作负载集群,直到 Pinniped Pod 完成重新启动。
tanzu mc upgrade
如果 IaaS 帐户中的多个基础虚拟机映像具有要升级到的相同版本的 Kubernetes,请使用 --os-name
选项指定所需的操作系统。有关详细信息,请参见在集群升级期间选择操作系统。
例如,在 vSphere 上,如果同时上载了使用 Kubernetes v1.27.5 的 Photon 模板和 Ubuntu OVA 模板,请指定 --os-name ubuntu
以升级要在 Ubuntu 虚拟机上运行的管理集群。
tanzu mc upgrade --os-name ubuntu
要在升级集群时跳过确认步骤,请指定 --yes
选项。
tanzu mc upgrade --yes
升级过程首先升级管理集群中运行的 vSphere、Amazon Web Services (AWS) 或 Azure 的集群 API 提供程序。然后,其将升级管理集群的所有控制平面和工作节点中的 Kubernetes 版本。
重要升级管理集群时,请勿对管理集群或其管理的工作负载集群运行
tanzu cluster
或tanzu mc
命令,例如从另一个引导计算机或 shell 窗口中运行命令。
如果升级在完成之前超时,请再次运行 tanzu mc upgrade
并指定值大于默认值 30 分钟的 --timeout
选项。
tanzu mc upgrade --timeout 45m0s
注意在安装了 v2.4 CLI 之后,但在升级管理集群之前,所有特定于上下文的 CLI 命令组(
tanzu cluster
、tanzu kubernetes-release
)以及除tanzu mc upgrade
和tanzu mc create
之外的所有management-cluster
插件命令都不可用,并且不包含在 Tanzu CLI--help
输出中。
升级完成后,再次运行带有 --include-management-cluster -A
选项的 tanzu cluster list
命令以检查管理集群是否已升级。
tanzu cluster list --include-management-cluster -A
您会看到管理集群现在正在运行新版本的 Kubernetes,但工作负载集群仍运行以前版本的 Kubernetes。
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLA TKR
k8s-1-25-10-cluster default running 1/1 1/1 v1.25.10+vmware.1 <none> dev v1.25.10---vmware.1-tkg.1
k8s-1-26-5-cluster default running 1/1 1/1 v1.26.5+vmware.1 <none> dev v1.26.5---vmware.1-tkg.1
mgmt-cluster tkg-system running 1/1 1/1 v1.27.5+vmware.1 management dev v1.27.5---vmware.2-tkg.1
重新生成管理员 kubeconfig
:
tanzu management-cluster kubeconfig get --admin
以下是此命令的输出示例:
Credentials of cluster 'mgmt' have been saved
You can now access the cluster by running 'kubectl config use-context mgmt-admin@mgmt'
重要如果在升级后不续订
kubeconfig
,则集群过期后将无法访问该集群。
您现在可以:
创建新的工作负载集群。默认情况下,使用此管理集群部署的任何新集群都将运行新的默认 Kubernetes 版本。但是,如果需要,您可以使用 tanzu cluster create
命令和 --tkr
选项部署运行不同 Kubernetes 版本的新集群。有关详细信息,请参见多个 Kubernetes 版本。