可以通过更改节点数横向扩展 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.
横向扩展控制平面
- 向 主管集群 进行身份验证。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 将上下文切换到运行 Tanzu Kubernetes 集群的 vSphere 命名空间。
kubectl config use-context tkgs-cluster-ns
- 列出正在命名空间中运行的 Kubernetes 集群。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 获取在目标集群中运行的节点数。
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
- 使用
kubectl edit
命令加载集群清单进行编辑。kubectl edit tanzukubernetescluster/tkgs-cluster-1
在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。
- 找到
spec.topology.controlPlane.count
参数,然后将节点数从 1 增加到 3。... controlPlane: count: 1 ...
... ControlPlane: count: 3 ...
- 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。
保存文件时,kubectl 会将所做更改应用到集群。在后台,主管集群 上的 虚拟机服务 将置备新的工作节点。
- 验证新节点是否已添加。
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 集群。
- 使用 主管集群 进行身份验证。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 将上下文切换到运行 Tanzu Kubernetes 集群的 vSphere 命名空间。
kubectl config use-context tkgs-cluster-ns
- 列出正在命名空间中运行的 Kubernetes 集群。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 获取在目标集群中运行的节点数。
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
- 使用
kubectl edit
命令加载集群清单进行编辑。kubectl edit tanzukubernetescluster/tkgs-cluster-1
在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。
- 找到
spec.topology.workers.count
参数,然后增加节点数。... workers: count: 3 ...
... workers: count: 4 ...
- 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。
保存文件时,kubectl 会将所做更改应用到集群。在后台,主管集群 上的 虚拟机服务 将置备新的工作节点。
- 验证新工作节点是否已添加。
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 集群。不支持横向缩减控制平面。
- 使用 主管集群 进行身份验证。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 将上下文切换到运行 Tanzu Kubernetes 集群的 vSphere 命名空间。
kubectl config use-context tkgs-cluster-ns
- 列出正在命名空间中运行的 Kubernetes 集群。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 获取在目标集群中运行的节点数。
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
- 使用
kubectl edit
命令加载集群清单进行编辑。kubectl edit tanzukubernetescluster/tkgs-cluster-1
在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。
- 找到
spec.topology.workers.count
参数,然后增加节点数。... workers: count: 4 ...
... workers: count: 2 ...
- 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。
保存文件时,kubectl 会将所做更改应用到集群。在后台,主管集群 上的 虚拟机服务 将置备新的工作节点。
- 验证工作节点是否已移除。
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 集群。
- 使用 主管集群 进行身份验证。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 将上下文切换到运行 Tanzu Kubernetes 集群的 vSphere 命名空间。
kubectl config use-context tkgs-cluster-ns
- 列出正在命名空间中运行的 Kubernetes 集群。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 描述目标 Tanzu Kubernetes 集群并检查虚拟机类。
kubectl describe tanzukubernetescluster tkgs-cluster-2
例如,以下集群使用的是 best-effort-small 虚拟机类:
Spec: ... Topology: Control Plane: Class: best-effort-small ... Workers: Class: best-effort-small ...
- 列出并描述可用的虚拟机类。
kubectl get virtualmachineclassbinding
kubectl describe virtualmachineclassbinding
- 打开以编辑目标集群清单。
kubectl edit tanzukubernetescluster/tkgs-cluster-2
在您的 KUBE_EDITOR 或 EDITOR 环境变量定义的文本编辑器中打开集群清单。
- 编辑清单,更改虚拟机类。
例如,编辑集群清单,对控制平面和工作节点使用
guaranteed-xlarge
虚拟机类。spec: topology: controlPlane: class: guaranteed-xlarge ... workers: class: guaranteed-xlarge ...
- 要应用更改,请在文本编辑器中保存该文件。要取消,请在不保存的情况下关闭编辑器。
保存文件时,kubectl 会将所做更改应用到集群。在后台,Tanzu Kubernetes Grid 服务 将置备新节点并删除旧节点。有关滚动更新过程的描述,请参见关于 Tanzu Kubernetes Grid 服务 集群更新。
- 验证集群是否正在更新。
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