升级工作负载集群

本主题介绍了如何升级 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 管理和工作负载集群

vSphere
如果要升级 vSphere 上运行的群集,则在将群集升级到 Tanzu Kubernetes Grid 版本的非默认 Kubernete 版本之前,vSphere 中必须提供适当的基本映像模板 OVA 作为虚拟机模板。有关将 OVA 文件导入到 vSphere 的信息,请参见 准备升级集群中的 vSphere 选项卡。
AWS
如果要升级在 Amazon Web Services (AWS) 上运行的集群,则包含受支持 Kubernetes 版本的 Amazon 2 Amazon 计算机映像 (AMI) 将公开提供给所有受支持 AWS 地理区域中的所有 AWS 用户。Tanzu Kubernetes Grid 会自动为升级期间指定的 Kubernetes 版本使用相应的 AMI。
Azure
如果要升级在 Azure 上运行的集群,请确保已完成 准备升级集群中的 Azure 选项卡中的步骤。


过程

升级过程将升级工作负载集群的所有控制平面和工作节点中的 Kubernetes 版本。

  1. 要查看可用管理集群的交互式列表并选择管理要升级的集群的管理集群,请运行 tanzu context use 命令:

    tanzu context use
    
  2. 要列出工作负载集群,请运行:

    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
    
  3. 要了解管理集群提供了哪些版本的 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
    
  4. 要发现可以将运行较旧 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。

  5. (Azure) 如果集群在 Azure 上运行,请在升级集群之前设置 AZURE_CLIENT_SECRET 环境变量:

    export AZURE_CLIENT_SECRET=YOUR-AZURE-CLIENT-SECRET
    
  6. (vSphere) 使用节点 IPAM的任何集群都需要在其 IP 池中至少具有一个未分配的 IP 地址,然后才能升级。

    1. 要检查集群是否使用节点 IPAM,请在集群对象的 spec.topology.variables network 设置中查找 addressesFromPools

      kubectl -n NAMESPACE get cluster CLUSTER-NAME -o json | jq '.spec.topology.variables[] | select(.name=="network")'
      

      其中,CLUSTER-NAMENAMESPACE 是工作负载集群的名称和管理集群命名空间。例如:

      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
        }
      } 
      
    2. 要检查集群的 IP 池是否具有未使用的地址,请将池中的总数与当前分配的数量进行比较,如以下命令输出的那样:

      kubectl -n NAMESPACE get ipaddress | grep POOL-NAME | wc -l
      
  7. 运行 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
    
  8. 升级完成后,运行 tanzu cluster list 命令以检查工作负载集群是否已升级:

    tanzu cluster list --include-management-cluster -A
    
  9. 重新生成管理员 kubeconfig

    tanzu cluster kubeconfig get CLUSTER-NAME --admin
    

    其中,CLUSTER-NAME 是工作负载集群的名称。

    重要

    如果在升级后不续订 kubeconfig,则集群过期后将无法访问该集群。

  10. 如果使用的是 LDAP 或 OIDC 身份提供程序,请确认您可以使用 kubectl 对集群进行身份验证。例如:

    kubectl get pods -A --kubeconfig my-cluster-credentials
    
  11. 升级工作负载集群上运行的任何 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 不兼容。

升级具有本地虚拟机模板的 Edge 集群

您无法使用 tanzu cluster upgrade 命令升级具有本地虚拟机模板的 Edge 工作负载集群的 Kubernetes 版本,如上文指定本地虚拟机模板中所述。

但可以升级 Edge 工作负载集群的 Kubernetes 版本,如下所示:

  1. 将新虚拟机模板上载到本地 vCenter 并记录其清单路径,例如 /dc0/vm/ubuntu-2004-kube-v1.26.8+vmware.1-tkg.1

  2. 编辑要升级的 Cluster 对象的清单:

    kubectl edit cluster CLUSTER-NAME
    

    其中,CLUSTER-NAME 是集群的名称

  3. spec.topology 下更新以下内容:

    • 设置 version 以反映新的 Kubernetes 版本。
    • 将所有 vcenter.template 值设置为新本地模板的清单路径,以在集群范围内或在单个计算机部署下进行更新。
  4. 保存并退出,以应用新的 Cluster 对象设置。

下一步操作

现在,您可以继续使用 Tanzu CLI 来管理集群。有关详细信息,请参见使用 Tanzu CLI 创建和管理 TKG 2.3 工作负载集群

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