本主题介绍了如何升级 Tanzu Kubernetes Grid (TKG) 工作负载集群。对于具有独立管理集群的 TKG,首先需要升级管理工作负载集群的管理集群。
重要
- 要升级在 vSphere 8 中使用主管部署的工作负载集群,请参见《使用 Tanzu CLI 创建和管理 TKG 2.3 工作负载集群》中的升级由主管部署的集群(仅限 vSphere 8)。
- 要升级使用本地存储的虚拟机模板的 Edge 工作负载集群,请参见升级具有本地虚拟机模板的 Edge 集群。
- 要升级从自定义集群清单创建的工作负载集群,请参见升级自定义集群。
- 独立管理集群和工作负载集群使用客户端证书对客户端进行身份验证。这些证书的有效期为一年。要续订证书,请至少每年升级一次集群。
重要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 管理和工作负载集群。
升级过程将升级工作负载集群的所有控制平面和工作节点中的 Kubernetes 版本。
要查看可用管理集群的交互式列表并选择管理要升级的集群的管理集群,请运行 tanzu context use
命令:
tanzu context use
要列出工作负载集群,请运行:
tanzu cluster list --include-management-cluster -A
具有 --include-management-cluster -A
选项的 tanzu cluster list
命令会显示管理集群及其管理的所有集群中运行的 Kubernetes 版本。在此示例中,您可以看到管理集群已升级到 v1.26.8,但工作负载集群运行的是旧版本的 Kubernetes。
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
k8s-1-24-14-cluster default running 1/1 1/1 v1.24.14+vmware.1 <none> dev v1.24.14---vmware.1-tkg.1
k8s-1-25-10-cluster default running 1/1 1/1 1.25.10+vmware.1 <none> dev 1.25.10---vmware.1-tkg.1
mgmt-cluster tkg-system running 1/1 1/1 v1.26.8+vmware.1 management dev v1.26.8---vmware.1-tkg.1
要了解管理集群提供了哪些版本的 Kubernetes,请运行 tanzu kubernetes-release get
命令:
tanzu kubernetes-release get
输出将列出可用于部署集群的所有 Kubernetes 版本,并具有以下注释:
COMPATIBLE
:当前的管理集群可以使用此 Tanzu Kubernetes 版本 (tkr
) 部署工作负载集群。UPDATES AVAILABLE
:此 tkr
在其 Kubernetes 版本行中不是最新的。运行此 tkr
版本的任何工作负载集群都可以升级到较新版本。例如:
NAME VERSION COMPATIBLE ACTIVE UPDATES AVAILABLE
v1.24.17---vmware.1-tiny.2-tkg.1 v1.24.17+vmware.1-tiny.2-tkg.1 True True
v1.24.17---vmware.2-tkg.1 v1.24.17+vmware.2-tkg.1 True True
v1.25.13---vmware.1-tiny.2-tkg.1 v1.25.13+vmware.1-tiny.2-tkg.1 True True
v1.25.13---vmware.2-tkg.1 v1.25.13+vmware.2-tkg.1 True True
v1.26.8---vmware.1-tiny.2-tkg.1 v1.26.8+vmware.1-tiny.2-tkg.1 True True
v1.26.8---vmware.2-tkg.1 v1.26.8+vmware.2-tkg.1 True True
要发现可以将运行较旧 tkr
版本的工作负载集群升级到的较新 tkr
版本,请运行 tanzu kubernetes-release available-upgrades get
命令,指定当前运行的 tkr
版本:
tanzu kubernetes-release available-upgrades get v1.25.10---vmware.2-tkg.1
此命令将列出运行指定版本的集群可以升级到的所有可用 Kubernetes 版本。
您还可以通过在 tanzu cluster available-upgrades get
命令中指定集群名称来发现特定工作负载集群可用的 tkr
版本:
tanzu cluster available-upgrades get k8s-1-24-14-cluster
此命令将列出与指定集群兼容的所有 Kubernetes 版本。
升级 tkr
版本时,不能跳过次要版本。例如,无法将集群直接从 v1.24.x 升级到 v1.26.x。必须先将 v1.24.x 集群升级到 v1.25.x,然后再将集群升级到 v1.26.x。
(Azure) 如果集群在 Azure 上运行,请在升级集群之前设置 AZURE_CLIENT_SECRET
环境变量:
export AZURE_CLIENT_SECRET=YOUR-AZURE-CLIENT-SECRET
(vSphere) 使用节点 IPAM的任何集群都需要在其 IP 池中至少具有一个未分配的 IP 地址,然后才能升级。
要检查集群是否使用节点 IPAM,请在集群对象的 spec.topology.variables
network
设置中查找 addressesFromPools
kubectl -n NAMESPACE get cluster CLUSTER-NAME -o json | jq '.spec.topology.variables[] | select(.name=="network")'
其中,CLUSTER-NAME
和 NAMESPACE
是工作负载集群的名称和管理集群命名空间。例如:
kubectl -n default get cluster my-work-cluster -o json | jq '.spec.topology.variables[] | select(.name=="network")'
{
"name": "network",
"value": {
"addressesFromPools": [
{
"apiGroup": "ipam.cluster.x-k8s.io",
"kind": "InClusterIPPool",
"name": "mgmt-cluster-nimbus"
}
],
"ipv6Primary": false
}
}
要检查集群的 IP 池是否具有未使用的地址,请将池中的总数与当前分配的数量进行比较,如以下命令输出的那样:
kubectl -n NAMESPACE get ipaddress | grep POOL-NAME | wc -l
运行 tanzu cluster upgrade CLUSTER-NAME
命令并输入 y
进行确认。要跳过确认步骤,请指定 --yes
选项。
要将集群升级到此版本 Tanzu Kubernetes Grid 的默认 Kubernetes 版本,请在没有任何选项的情况下运行 tanzu cluster upgrade
命令。在此版本中,默认版本为 v1.26.8
。例如:
tanzu cluster upgrade k8s-1-25-7-cluster
如果集群未在 default
命名空间中运行,请指定 --namespace
选项:
tanzu cluster upgrade CLUSTER-NAME --namespace NAMESPACE-NAME
如果升级在完成之前超时,请再次运行 tanzu cluster upgrade
并指定值大于默认值 30 分钟的 --timeout
选项:
tanzu cluster upgrade CLUSTER-NAME --timeout 45m0s
重要Azure 上的操作有时比其他平台上所需的时间长。如果要升级 Azure 上的集群,请定期设置
--timeout
选项以避免出现故障。
如果 IaaS 帐户中的多个基础虚拟机映像具有要升级到的相同的 Kubernetes 版本,则可以包括 --os-name
和其他选项以指定目标操作系统,如选择要升级到的操作系统:
tanzu cluster upgrade CLUSTER-NAME --os-name ubuntu
在 vSphere 上,可以使用 --vsphere-vm-template-name
选项为集群节点指定目标 OVA 模板,如选择要升级到的 OVA 模板所述:
tanzu cluster upgrade CLUSTER-NAME --vsphere-vm-template-name "/dc0/vm/tanzu/ubuntu-2004-kube-v1.29.9-vmware.1"
由于无法跳过次要版本的 tkr
,如果尝试升级位于默认版本后面的多个次要版本的集群,升级命令将失败。例如,无法直接从 v1.24.x 升级到 v1.26.x。要将集群升级到不是此版本 Tanzu Kubernetes Grid 的默认版本的 Kubernetes 版本,请使用所选版本的 NAME
指定 --tkr
选项,如上面的 tanzu kubernetes-release get
所列。例如,将集群 k8s-1-24-14-cluster
从 v1.24.14 升级到 v1.25.13。
tanzu cluster upgrade k8s-1-24-14-cluster --tkr v1.25.13---vmware.1-tkg.1
升级完成后,运行 tanzu cluster list
命令以检查工作负载集群是否已升级:
tanzu cluster list --include-management-cluster -A
重新生成管理员 kubeconfig
:
tanzu cluster kubeconfig get CLUSTER-NAME --admin
其中,CLUSTER-NAME
是工作负载集群的名称。
重要如果在升级后不续订
kubeconfig
,则集群过期后将无法访问该集群。
如果使用的是 LDAP 或 OIDC 身份提供程序,请确认您可以使用 kubectl
对集群进行身份验证。例如:
kubectl get pods -A --kubeconfig my-cluster-credentials
升级工作负载集群上运行的任何 CLI 管理的软件包,例如 Contour、Fluent Bit 或 Prometheus。有关升级 CLI 管理的软件包的详细信息,请参见更新软件包。
重要如果已在工作负载集群上安装 Prometheus,并将工作负载集群升级到 Kubernetes v1.25,则必须将 Prometheus 升级到最新版本
2.37.0+vmware.3-tkg.1
。Prometheus 软件包的早期版本(例如版本2.37.0+vmware.1-tkg.1
)与 Kubernetes 1.25 不兼容。
您无法使用 tanzu cluster upgrade
命令升级具有本地虚拟机模板的 Edge 工作负载集群的 Kubernetes 版本,如上文指定本地虚拟机模板中所述。
但可以升级 Edge 工作负载集群的 Kubernetes 版本,如下所示:
将新虚拟机模板上载到本地 vCenter 并记录其清单路径,例如 /dc0/vm/ubuntu-2004-kube-v1.26.8+vmware.1-tkg.1
。
编辑要升级的 Cluster
对象的清单:
kubectl edit cluster CLUSTER-NAME
其中,CLUSTER-NAME
是集群的名称
在 spec.topology
下更新以下内容:
version
以反映新的 Kubernetes 版本。vcenter.template
值设置为新本地模板的清单路径,以在集群范围内或在单个计算机部署下进行更新。保存并退出,以应用新的 Cluster
对象设置。
现在,您可以继续使用 Tanzu CLI 来管理集群。有关详细信息,请参见使用 Tanzu CLI 创建和管理 TKG 2.3 工作负载集群。