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

Tanzu Kubernetes Grid 服务 支持通过更改 VirtualMachineClass 定义来更新集群。如果这样做,该服务将推出具有该新类的新节点,并停止旧节点。请参见 关于 Tanzu Kubernetes 集群更新
注: VirtualMachineClass 必须绑定到置备了 Tanzu Kubernetes 集群的 vSphere 命名空间。请参见 用于 Tanzu Kubernetes 集群的虚拟机类

前提条件

此任务使用命令 kubectl edit tanzukubernetescluster/CLUSTER-NAME 更新集群清单。kubectl edit 命令将在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。保存文件时,将使用所做更改更新集群。请参见为 Kubectl 指定默认的文本编辑器

过程

  1. 主管集群 进行身份验证。请参见以 vCenter Single Sign-On 用户的身份连接到 主管集群
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. 将上下文切换到置备了目标 Tanzu Kubernetes 集群的 vSphere 命名空间
    kubectl config use-context SUPERVISOR-NAMESPACE
  3. 描述目标 Tanzu Kubernetes 集群并检查虚拟机类。
    kubectl describe tanzukubernetescluster CLUSTER-NAME
    例如,以下集群使用的是 best-effort-medium 虚拟机类:
    Spec:
      ...
      Topology:
        Control Plane:
          Class:          best-effort-medium
          ...
        Workers:
          Class:          best-effort-medium
          ...
    
  4. 列出并描述命名空间中可用的虚拟机类。
    kubectl get virtualmachineclassbindings
    注: 命令 kubectl get virtualmachineclasses 列出 主管集群上存在的所有虚拟机类。由于必须将虚拟机类与 vSphere 命名空间关联,因此只能使用这些绑定到目标命名空间的虚拟机类。
  5. 运行以下命令以编辑集群清单。
    kubectl edit tanzukubernetescluster/CLUSTER-NAME
  6. 通过以下方式编辑清单:更改 version 字符串,并取消设置 fullVersion 或将其设为 null,以避免在发现过程中可能出现版本不匹配问题。
    例如,将集群清单从对控制平面和工作节点使用 best-effort-medium 虚拟机类:
    spec:
      topology:
        controlPlane:
          class: best-effort-medium
          ...
        workers:
          class: best-effort-medium
          ...
    
    更改为对控制平面和工作节点使用 guaranteed-large 虚拟机类:
    spec:
      topology:
        controlPlane:
          class: guaranteed-large
          ...
        workers:
          class: guaranteed-large
          ...
    
  7. 保存对清单文件所做的更改。
    保存该文件时,kubectl 会将更改应用到集群。在后台, Tanzu Kubernetes Grid 服务 将置备新的节点虚拟机并停止旧虚拟机。
  8. 验证 kubectl 是否报告清单编辑已成功记录。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
    注: 如果显示错误,或者 kubectl 未报告集群清单已成功编辑,请确保使用 KUBE_EDITOR 环境变量正确配置了默认文本编辑器。请参见 为 Kubectl 指定默认的文本编辑器
  9. 验证集群是否正在更新。
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.18.5+vmware.1-tkg.1.c40d30d   21h   updating
  10. 验证集群是否已更新。
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.18.5+vmware.1-tkg.1.c40d30d   22h   running