可以通过更改节点数横向扩展 Tanzu Kubernetes 集群,也可以通过更改托管节点的虚拟机类纵向扩展集群。

支持的扩展操作

下表列出了支持的 Tanzu Kubernetes 集群扩展操作。
表 1. 支持的 Tanzu Kubernetes 集群扩展操作
节点 横向扩展 横向缩减 纵向扩展
控制平面
工作节点
请记住以下注意事项:
  • 纵向扩展集群节点时,由于缺少可用资源,工作负载可能无法继续在节点上运行。因此,横向扩展可能是首选方法。
  • 虚拟机类不可改变。如果在编辑该集群使用的虚拟机类后扩大 Tanzu Kubernetes 集群,新集群节点将使用更新的类定义,但现有集群节点继续使用初始类定义,从而导致不匹配。请参见用于 Tanzu Kubernetes 集群的虚拟机类

扩展必备条件:配置 Kubectl 编辑

要扩展 Tanzu Kubernetes 集群,请使用命令 kubectl edit tanzukubernetescluster/CLUSTER-NAME 更新集群清单。kubectl edit 命令将在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。有关设置环境变量的说明,请参阅为 Kubectl 指定默认的文本编辑器

保存清单更改时, kubectl 会报告编辑已成功记录,并且集群已使用更改进行更新。
kubectl edit tanzukubernetescluster/tkgs-cluster-1
tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
要取消,只需关闭编辑器即可,无需进行保存。
kubectl edit tanzukubernetescluster/tkgs-cluster-1
Edit cancelled, no changes made.

横向扩展控制平面

可以通过将控制平面节点数从 1 增加到 3,横向扩展 Tanzu Kubernetes 集群。控制平面节点数必须为奇数。无法横向缩减控制平面。
  1. 主管集群 进行身份验证。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. 将上下文切换到运行 Tanzu Kubernetes 集群的 vSphere 命名空间
    kubectl config use-context tkgs-cluster-ns
  3. 列出正在命名空间中运行的 Kubernetes 集群。
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. 获取在目标集群中运行的节点数。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    例如,以下集群有 1 个控制平面节点和 3 个工作节点。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      1               3        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    
  5. 使用 kubectl edit 命令加载集群清单进行编辑。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。

  6. 找到 spec.topology.controlPlane.count 参数,然后将节点数从 1 增加到 3。
    ...
    controlPlane:
        count: 1
    ...
    
    ...
    ControlPlane:
        count: 3
    ...
    
  7. 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。

    保存文件时,kubectl 会将所做更改应用到集群。在后台,主管集群 上的 虚拟机服务 将置备新的工作节点。

  8. 验证新节点是否已添加。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    横向扩展后的控制平面现在具有 3 个节点。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               3        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    

横向扩展工作节点

可以通过使用 kubectl 增加工作节点数来横向扩展 Tanzu Kubernetes 集群。

  1. 使用 主管集群 进行身份验证。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. 将上下文切换到运行 Tanzu Kubernetes 集群的 vSphere 命名空间
    kubectl config use-context tkgs-cluster-ns
  3. 列出正在命名空间中运行的 Kubernetes 集群。
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. 获取在目标集群中运行的节点数。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    例如,以下集群有 3 个控制平面节点和 3 个工作节点。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               3        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    
  5. 使用 kubectl edit 命令加载集群清单进行编辑。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。

  6. 找到 spec.topology.workers.count 参数,然后增加节点数。
    ...
    workers:
        count: 3
    ...
    
    ...
    workers:
        count: 4
    ...
    
  7. 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。

    保存文件时,kubectl 会将所做更改应用到集群。在后台,主管集群 上的 虚拟机服务 将置备新的工作节点。

  8. 验证新工作节点是否已添加。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    横向扩展后,集群有 4 个工作节点。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               4        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    

横向缩减工作节点

可以通过减少工作节点数来横向缩减 Tanzu Kubernetes 集群。不支持横向缩减控制平面。

  1. 使用 主管集群 进行身份验证。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. 将上下文切换到运行 Tanzu Kubernetes 集群的 vSphere 命名空间
    kubectl config use-context tkgs-cluster-ns
  3. 列出正在命名空间中运行的 Kubernetes 集群。
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. 获取在目标集群中运行的节点数。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    例如,以下集群有 3 个控制平面节点和 3 个工作节点。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               4        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    
  5. 使用 kubectl edit 命令加载集群清单进行编辑。
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。

  6. 找到 spec.topology.workers.count 参数,然后增加节点数。
    ...
    workers:
        count: 4
    ...
    
    ...
    workers:
        count: 2
    ...
    
  7. 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。

    保存文件时,kubectl 会将所做更改应用到集群。在后台,主管集群 上的 虚拟机服务 将置备新的工作节点。

  8. 验证工作节点是否已移除。
    kubectl get tanzukubernetescluster tkgs-cluster-1
    横向缩减后,集群有 2 个工作节点。
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               2        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    

垂直扩展集群

可以通过更改用于托管集群节点的虚拟机类来纵向扩展 Tanzu Kubernetes 集群。对于控制平面节点和工作节点,都支持纵向扩展。

Tanzu Kubernetes Grid 服务 支持通过服务中内置的滚动更新机制纵向扩展集群节点。如果更改 VirtualMachineClass 定义,该服务将推出具有该新类的新节点,并停止旧节点。请参见更新 Tanzu Kubernetes 集群

  1. 使用 主管集群 进行身份验证。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. 将上下文切换到运行 Tanzu Kubernetes 集群的 vSphere 命名空间
    kubectl config use-context tkgs-cluster-ns
  3. 列出正在命名空间中运行的 Kubernetes 集群。
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. 描述目标 Tanzu Kubernetes 集群并检查虚拟机类。
    kubectl describe tanzukubernetescluster tkgs-cluster-2

    例如,以下集群使用的是 best-effort-small 虚拟机类:

    Spec:
      ...
      Topology:
        Control Plane:
          Class:          best-effort-small
          ...
        Workers:
          Class:          best-effort-small
          ...
    
  5. 列出并描述可用的虚拟机类。
    kubectl get virtualmachineclassbinding
    kubectl describe virtualmachineclassbinding
    注: 要使用的虚拟机类必须绑定 vSphere 命名空间。请参见 用于 Tanzu Kubernetes 集群的虚拟机类
  6. 打开以编辑目标集群清单。
    kubectl edit tanzukubernetescluster/tkgs-cluster-2

    在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。

  7. 编辑清单,更改虚拟机类。
    例如,编辑集群清单,对控制平面和工作节点使用 guaranteed-xlarge 虚拟机类。
    spec:
      topology:
        controlPlane:
          class: guaranteed-xlarge
          ...
        workers:
          class: guaranteed-xlarge
          ...
    
  8. 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。

    保存文件时,kubectl 会将所做更改应用到集群。在后台,Tanzu Kubernetes Grid 服务 将置备新节点并删除旧节点。有关滚动更新过程的描述,请参见关于 Tanzu Kubernetes Grid 服务 集群更新

  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