可以通过更改用于托管集群节点的虚拟机类来更新 TKG Service 集群。

您可以通过使用 kubectl edit 命令编辑 vmClass 定义来启动 TKG Service 集群的滚动更新。将推出基于已更改类的新节点,并停用旧节点。
注: 无法使用 kubectl apply 命令更新已部署的 TKG 集群。

前提条件

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

过程

  1. 主管 进行身份验证。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. 将环境切换到置备了目标 TKG 集群的 vSphere 命名空间
    kubectl config use-context SUPERVISOR-NAMESPACE
  3. 描述目标 TKG 集群并检查虚拟机类。
    v1alpha3 集群:
    kubectl describe tanzukubernetescluster CLUSTER-NAME
    v1beta1 集群:
    kubectl describe cluster CLUSTER-NAME
  4. 列出并描述置备集群的 vSphere 命名空间 中的可用虚拟机类。
    kubectl get virtualmachineclass
    注: 目标虚拟机类必须与置备 TKG 集群的 vSphere 命名空间 相关联。有关将虚拟机类绑定到 vSphere 命名空间 的详细信息,请参阅 TKG Service 或虚拟机服务文档。
  5. 运行以下命令以编辑集群清单。
    v1alpha3 集群:
    kubectl edit tanzukubernetescluster/CLUSTER-NAME
    v1beta1 集群:
    kubectl edit cluster/CLUSTER-NAME
  6. 编辑清单,更改虚拟机类字符串。
    例如,如果您使用的是 v1alpah3 集群,请在集群清单中将针对工作节点使用 guaranteed-medium 虚拟机类:
     topology:
        controlPlane:
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-medium
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-medium
    更改为针对工作节点使用 guaranteed-large 虚拟机类:
     topology:
        controlPlane:
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-medium
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-large
    同样,如果已置备 v1beta1 集群,请将 variables.vmclass 的值更新为目标虚拟机类。
  7. 保存对清单文件所做的更改。
    保存该文件时,kubectl 会将更改应用到集群。在后台,TKG 控制器将置备新的节点虚拟机并停止旧虚拟机。
  8. 验证 kubectl 是否报告清单编辑已成功记录。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
    注: 如果显示错误,或者 kubectl 未报告集群清单已成功编辑,请确保使用 KUBE_EDITOR 环境变量正确配置了默认文本编辑器。请参见 #GUID-104C2238-1D65-402A-85F0-742DAB49AB1A
  9. 验证集群是否已更新。
    v1alpha3 集群:
    kubectl get tanzukubernetescluster
    v1beta1 集群:
    kubectl get cluster