此任务介绍了如何通过编辑 TKG 集群清单更新 TKG 集群的 Tanzu Kubernetes 版本 版本。

您可以通过使用 kubectl edit 命令升级 Tanzu Kubernetes 版本 来启动 TKGS 集群的滚动更新。
注: 无法使用 kubectl apply 命令更新已部署集群的 TKR 版本。

前提条件

此任务需要使用 kubectl edit 命令。此命令将在由 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。保存文件时,将使用所做更改更新集群。要为 kubectl 配置编辑器以便可以运行 kubectl edit 命令,请参见#GUID-104C2238-1D65-402A-85F0-742DAB49AB1A

过程

  1. 主管 进行身份验证。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. 将环境切换到置备了目标工作负载集群的 vSphere 命名空间
    kubectl config use-context SUPERVISOR-NAMESPACE
  3. 获取目标 TKG 集群和版本。
    v1alpha3 集群:
    kubectl get tanzukubernetescluster
    v1beta1 集群:
    kubectl get cluster
  4. 列出可用的 Tanzu Kubernetes 版本。
    kubectl get tanzukubernetesreleases
  5. 运行以下命令以编辑集群清单。
    v1alpha3 集群:
    kubectl edit tanzukubernetescluster/CLUSTER-NAME
    v1beta1 集群:
    kubectl edit cluster/CLUSTER-NAME
  6. 通过更新 Tanzu Kubernetes 版本 字符串编辑清单。
    例如,对于 v1alpha3 集群,从 TKR v1.25.7 更改为:
    topology:
      controlPlane:
       replicas: 1
       storageClass: vsan-default-storage-policy
       tkr:
        reference:
         name: v1.25.7---vmware.3-fips.1-tkg.1
       vmClass: guaranteed-large
      nodePools:
      - name: worker-tkg-pool01
       replicas: 3
       storageClass: vsan-default-storage-policy
       tkr:
        reference:
         name: v1.25.7---vmware.3-fips.1-tkg.1
       vmClass: guaranteed-large
       volumes:
       - capacity:
         storage: 128Gi
        mountPath: /var/lib/containerd
        name: containerd
    TKR v1.26.5:
    topology:
      controlPlane:
       replicas: 1
       storageClass: vsan-default-storage-policy
       tkr:
        reference:
         name: v1.26.5---vmware.2-fips.1-tkg.1
       vmClass: guaranteed-large
      nodePools:
      - name: worker-tkg-pool01
       replicas: 3
       storageClass: vsan-default-storage-policy
       tkr:
        reference:
         name: v1.26.5---vmware.2-fips.1-tkg.1
       vmClass: guaranteed-large
       volumes:
       - capacity:
         storage: 128Gi
        mountPath: /var/lib/containerd
        name: containerd
    注: 控制平面节点和工作节点必须具有相同的 TKR 版本。您可以更新所有 TKr 实例,也可以更新控制平面版本并从工作节点中移除 TKR 名称。
    例如,对于 v1beta1 集群,从 TKR v1.25.7 更改为:
    apiVersion: cluster.x-k8s.io/v1beta1
      ...
      topology:
        class: tanzukubernetescluster
        version: v1.25.7---vmware.3-fips.1-tkg.1
        controlPlane:
          replicas: 3
        workers:
          ...
        variables:
          ...
     
    TKR v1.26.5:
    apiVersion: cluster.x-k8s.io/v1beta1
      ...
      topology:
        class: tanzukubernetescluster
        version: v1.26.5---vmware.2-fips.1-tkg.1
        controlPlane:
          replicas: 3
        workers:
          ...
        variables:
          ...
  7. 保存对清单文件所做的更改。
    保存该文件时,kubectl 会将更改应用到集群。在后台,主管上的虚拟机服务置备新的工作节点。
  8. 验证 kubectl 是否报告清单编辑已成功记录。
    kubectl edit tanzukubernetescluster/tkg-cluster-1
    tanzukubernetescluster.run.tanzu.vmware.com/tkg-cluster-1 edited
    注: 如果显示错误,或者 kubectl 未报告集群清单已成功编辑,请确保使用 KUBE_EDITOR 环境变量正确配置了默认文本编辑器。请参见 #GUID-104C2238-1D65-402A-85F0-742DAB49AB1A
  9. 验证集群是否正在更新。
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.26.5---vmware.2-fips.1-tkg.1  21h   updating
  10. 验证集群是否已更新。
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.26.5---vmware.2-fips.1-tkg.1   22h   running