本主题介绍如何使用以下方法扩展 Tanzu Kubernetes Grid (TKG) 工作负载集群和独立管理集群:
Autoscaler:对于由独立管理集群部署的工作负载集群,可以启用 Cluster Autoscaler 来根据需求自动扩展工作节点数。请参见使用 Cluster Autoscaler 扩展工作节点。
无法使用 Autoscaler 扩展主管集群部署的工作负载集群。
横向扩展:对于工作负载或独立管理集群,您可以手动扩展控制平面和工作节点的数量。请参见横向扩展集群。
纵向扩展:对于工作负载集群,可以手动更改控制平面和工作节点的大小。请参见垂直扩展集群。
注意要扩展节点池中的节点,请参见管理不同虚拟机类型的节点池中的更新节点池。
Cluster Autoscaler 是一个 Kubernetes 程序,可根据工作负载集群的需求自动扩展 Kubernetes 集群。仅对独立管理集群部署的工作负载集群使用 Cluster Autoscaler。
有关 Cluster Autoscaler 的详细信息,请参见 GitHub 中的以下文档:
默认情况下,Cluster Autoscaler 在 Tanzu Kubernetes Grid 中处于停用状态。要在工作负载集群中启用 Cluster Autoscaler,请在运行 tanzu cluster create --file
之前,将 ENABLE_AUTOSCALER
设置为 true
并在集群配置文件中设置 AUTOSCALER_
选项或设置选项为环境变量。
重要对于基于类的集群,由于集群 API 中存在标签传播问题,在创建基于类的工作负载集群后,必须手动将
min-size
和max-size
注释添加到其MachineDeployment
对象以启用 Cluster Autoscaler,如下面的(手动添加最小和最大大小注释)[#cc-workaround] 中所述。
集群配置文件中的每个 Cluster Autoscaler 配置变量都与 Cluster Autoscaler 工具中的参数相对应。有关这些变量及其默认值的列表,请参见《配置文件变量参考》中的 Cluster Autoscaler。
AUTOSCALER_*_SIZE
设置会限制集群中的工作节点数,而 AUTOSCALER_MAX_NODES_TOTAL
会限制所有节点(工作节点和控制平面)的计数。
根据集群中的工作节点数设置 AUTOSCALER_*_SIZE
值:
dev
集群),请设置 AUTOSCALER_MIN_SIZE_0
和 AUTOSCALER_MAX_SIZE_0
。prod
集群,请设置:
AUTOSCALER_MIN_SIZE_0
和 AUTOSCALER_MAX_SIZE_0
AUTOSCALER_MIN_SIZE_1
和 AUTOSCALER_MAX_SIZE_1
AUTOSCALER_MIN_SIZE_2
和 AUTOSCALER_MAX_SIZE_2
下面提供了集群配置文件中的 Cluster Autoscaler 设置示例。部署集群后,无法更改以下值。
#! ---------------------------------------------------------------------
#! Autoscaler related configuration
#! ---------------------------------------------------------------------
ENABLE_AUTOSCALER: false
AUTOSCALER_MAX_NODES_TOTAL: "0"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_ADD: "10m"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_DELETE: "10s"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_FAILURE: "3m"
AUTOSCALER_SCALE_DOWN_UNNEEDED_TIME: "10m"
AUTOSCALER_MAX_NODE_PROVISION_TIME: "15m"
AUTOSCALER_MIN_SIZE_0:
AUTOSCALER_MAX_SIZE_0:
AUTOSCALER_MIN_SIZE_1:
AUTOSCALER_MAX_SIZE_1:
AUTOSCALER_MIN_SIZE_2:
AUTOSCALER_MAX_SIZE_2:
对于在启用 Cluster Autoscaler 的情况下创建的每个工作负载集群,Tanzu Kubernetes Grid 会在管理集群中创建 Cluster Autoscaler 部署。要停用 Cluster Autoscaler,请删除与工作负载集群关联的 Cluster Autoscaler 部署。
创建启用了 Cluster Autoscaler 的基于类的工作负载集群后,由于min-size
集群 API 中存在标签传播问题,必须将注释添加到其 MachineDeployment
对象,如下所示:
将 kubectl
的上下文设置为管理集群:
kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
其中,MY-MGMT-CLUSTER
是管理集群的名称。
列出 MachineDeployment
对象,并记下其 AGE
值:
kubectl get md
对象名称以 -md
结尾,后面跟每个可用区 (AZ) 的编号。
对于集群中每个新创建的 MachineDeployment
:
添加 min-size
注释:
kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size="MIN-SIZE"
其中:
MD-NAME
是 MachineDeployment
对象的名称,例如 my-wc-md-0
MIN-SIZE
是 AZ 的 AUTOSCALER_MIN_SIZE_*
值,例如,部署到第一个 AZ 的 *-md0
的 AUTOSCALER_MIN_SIZE_0
值。添加 max-size
注释:
kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
其中,MAX-SIZE
是 AZ 的最大 MachineDeployment
节点计数,如上所述。
根据集群类型,可以通过两种方式横向扩展 TKG 集群:
replicas
设置,如下面的扩展基于类的集群部分中所述。要使用 Tanzu CLI 横向扩展工作负载或独立管理集群,请运行 tanzu cluster scale
命令。
重要在 Tanzu Kubernetes Grid 操作运行时,请勿更改上下文或编辑
.kube-tkg/config
文件。
--controlplane-machine-count
和 --worker-machine-count
选项分别设置新的控制平面和工作节点数。示例:
要将集群扩展到 5 个控制平面节点和 10 个工作节点:
tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10
如果使用 --controlplane-machine-count 1
部署了集群,然后将其扩展到 3 个控制平面节点,Tanzu Kubernetes Grid 将在控制平面上自动启用堆叠的 HA。
如果集群在除 default
以外的命名空间中运行,则必须包括 --namespace
选项:
tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10 --namespace=MY-NAMESPACE
具有独立管理集群的 vSphere:在部署了独立管理集群的 vSphere 上更改集群的节点计数后,必须预留或释放任何添加或移除的节点的 IP 地址的 DHCP 预留。要手动更改这些预留,请参见配置节点 DHCP 预留和端点 DNS 记录(仅限 vSphere)。有关如何配置 DHCP 预留的说明,请参见 DHCP 服务器文档。
vSphere with Supervisor 集群 在 vSphere with Tanzu 中运行的集群上,只能运行 1 个控制平面节点或 3 个控制平面节点。您可以将控制平面节点数从 1 纵向扩展到 3,但无法将该数值从 3 缩减为 1。
纵向扩展工作负载集群的过程取决于集群类型。
按照《集群 API 手册》中的更新基础架构计算机模板过程进行操作,此过程将更改集群的计算机模板。
该过程将使用 kubectl get
命令下载集群的现有计算机模板,您可以按以下方式构建该命令:
kubectl get MACHINE-TEMPLATE-TYPE MACHINE-TEMPLATE-NAME -o yaml
其中:
MACHINE-TEMPLATE-TYPE
为:
VsphereMachineTemplate
AWSMachineTemplate
AzureMachineTemplate
MACHINE-TEMPLATE-NAME
是要扩展的集群节点的计算机模板的名称,其格式如下所示:
CLUSTER-NAME-control-plane
CLUSTER-NAME-worker
例如:
kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml
要纵向扩展基于类的集群,请更改集群定义中的 machine
设置,如下面的扩展基于类的集群中所述。
要使用基于类的集群的 topology
配置横向或纵向扩展基于类的集群:
将 kubectl
设置为管理集群的上下文,例如:
kubectl config use-context management-cluster@admin
运行 kubectl edit cluster CLUSTER-NAME
并编辑其 topology
块中 controlPlane
和 worker
下的设置。
要横向扩展,请更改 replicas
设置。- 要纵向扩展,请更改 machine
下的设置。
例如:
- name: controlPlane
value:
replicas: 3
machine:
diskGiB: 20
memoryMiB: 8192
numCPUs: 4
- name: worker
value:
replicas: 5
machine:
diskGiB: 20
memoryMiB: 8192
numCPUs: 4