En este tema se explica cómo escalar los clústeres de carga de trabajo para Tanzu Kubernetes Grid (TKG) mediante los siguientes métodos:
Escalador automático: Para los clústeres de carga de trabajo implementados por un clúster de administración independiente, puede utilizar el Escalador automático de clústeres para escalar de forma automática el número de nodos de trabajo con el fin de cumplir la demanda. Consulte Escalar nodos de trabajo con el escalador automático de clústeres.
No se puede utilizar el Escalador automático para escalar clústeres de carga de trabajo implementados por un clúster supervisor.
Escalar horizontalmente: Para los clústeres de administración independientes o de carga de trabajo, puede escalar manualmente el número de nodos de trabajo y plano de control. Consulte Escalar un clúster de forma horizontal.
Escalar verticalmente: Para los clústeres de carga de trabajo, puede cambiar manualmente el tamaño de los nodos de trabajo y plano de control. Consulte Escalar un clúster de forma vertical.
NotaPara escalar nodos en un grupo de nodos, consulte Actualizar grupos de nodos en Administrar grupos de nodos de diferentes tipos de máquina virtual.
El Escalador automático de clústeres es un programa de Kubernetes que escala automáticamente los clústeres de Kubernetes en función de la demanda de los clústeres de carga de trabajo. Utilice el Escalador automático de clústeres solo para los clústeres de carga de trabajo implementados por un clúster de administración independiente.
Para obtener más información sobre el Escalador automático de clústeres, consulte la siguiente documentación en GitHub:
De forma predeterminada, el Escalador automático de clústeres está desactivado en Tanzu Kubernetes Grid. Para habilitar el Escalador automático de clústeres en un clúster de carga de trabajo, establezca el ENABLE_AUTOSCALER
en true
y establezca las opciones de AUTOSCALER_
en el archivo de configuración del clúster o como variables de entorno antes de ejecutar tanzu cluster create --file
.
ImportantePara clústeres basados en clases, debido a un problema de propagación de etiquetas en la API del clúster, después de crear un clúster de carga de trabajo basado en clases, debe agregar manualmente anotaciones
min-size
ymax-size
a sus objetosMachineDeployment
para habilitar el Escalador automático de clústeres, como se describe en (Agregar manualmente anotaciones de tamaño mínimo y tamaño máximo)[#cc-solución alternativa] a continuación.
Cada variable de configuración del Escalador automático de clústeres de un archivo de configuración del clúster corresponde a un parámetro de la herramienta Escalador automático de clústeres. Para obtener una lista de estas variables y sus valores predeterminados, consulte Escalador automático de clústeres en la Referencia de variables del archivo de configuración.
La configuración de AUTOSCALER_*_SIZE
limita el número de nodos de trabajo en un clúster, mientras que AUTOSCALER_MAX_NODES_TOTAL
limita el recuento de todos los nodos, tanto de plano de control como de trabajo.
Establezca los valores AUTOSCALER_*_SIZE
en función del número de nodos de trabajo en el clúster:
dev
, establezca AUTOSCALER_MIN_SIZE_0
y AUTOSCALER_MAX_SIZE_0
.prod
, establezca:
AUTOSCALER_MIN_SIZE_0
y AUTOSCALER_MAX_SIZE_0
AUTOSCALER_MIN_SIZE_1
y AUTOSCALER_MAX_SIZE_1
AUTOSCALER_MIN_SIZE_2
y AUTOSCALER_MAX_SIZE_2
A continuación, se proporciona un ejemplo de configuración del Escalador automático de clústeres en un archivo de configuración del clúster. No puede modificar estos valores después de implementar el clúster.
#! ---------------------------------------------------------------------
#! 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:
Para cada clúster de carga de trabajo que cree con el Escalador automático de clústeres habilitado, Tanzu Kubernetes Grid crea una implementación de Escalador automático de clústeres en el clúster de administración. Para desactivar el Escalador automático de clústeres, elimine la implementación del Escalador automático de clústeres asociada con el clúster de carga de trabajo.
Después de crear un clúster de carga de trabajo basado en clases que tenga habilitado el Escalador automático de clústeres, debe agregar manualmente las anotaciones min-size
y max-size
a sus objetos MachineDeployment
de la siguiente manera, debido a un problema de propagación de etiquetas en la API del clúster:
Establezca el contexto de kubectl
en su clúster de administración:
kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
Donde MY-MGMT-CLUSTER
es el nombre del clúster de administración.
Enumere los objetos MachineDeployment
y anote sus valores AGE
:
kubectl get md
Los nombres de objeto terminan en -md
seguido de un número para cada zona de disponibilidad (AZ).
Para cada MachineDeployment
recién creada en el clúster:
Añada una anotación min-size
:
kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size="MIN-SIZE"
Donde:
MD-NAME
es el nombre del objeto MachineDeployment
, por ejemplo, my-wc-md-0
MIN-SIZE
es el valor AUTOSCALER_MIN_SIZE_*
para la AZ, por ejemplo, el valor de AUTOSCALER_MIN_SIZE_0
para *-md0
, que se implementa en la primera AZ.Añada una anotación max-size
:
kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
Donde MAX-SIZE
es el recuento máximo de nodos MachineDeployment
para la AZ, como se indica anteriormente.
Puede escalar un clúster de TKG horizontalmente de dos maneras, según el tipo de clúster:
replicas
en la definición del clúster, como se describe en la sección Escalar un clúster basado en clases a continuación.Para escalar un clúster de administración independiente o de carga de trabajo horizontalmente mediante la CLI de Tanzu, ejecute el comando tanzu cluster scale
.
ImportanteNo cambie el contexto ni edite el archivo
.kube-tkg/config
mientras se ejecutan las operaciones de Tanzu Kubernetes Grid.
--controlplane-machine-count
y --worker-machine-count
establecen el nuevo número de nodos de trabajo y de plano de control, respectivamente.Ejemplos:
Para escalar un clúster a 5 nodos de plano de control y 10 nodos de trabajo:
tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10
Si implementó un clúster con --controlplane-machine-count 1
y, a continuación, lo escala hasta 3 nodos de plano de control, Tanzu Kubernetes Grid habilita automáticamente HA apilada en el plano de control.
Si el clúster se ejecuta en un espacio de nombres que no sea default
, debe incluir la opción --namespace
:
tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10 --namespace=MY-NAMESPACE
vSphere con clúster de administración independiente: Después de cambiar el recuento de nodos de un clúster en vSphere implementados con un clúster de administración independiente, las reservas de DHCP de las direcciones IP de los nodos agregados o eliminados deben reservarse o liberarse. Para cambiar estas reservas manualmente, consulte Configurar las reservas de DHCP del nodo y el registro de DNS de endpoint (solo vSphere). Para obtener instrucciones sobre cómo configurar reservas de DHCP, consulte la documentación del servidor DHCP.
vSphere con clúster supervisor En los clústeres que se ejecutan en vSphere with Tanzu, solo puede ejecutar 1 nodo de plano de control o 3 nodos de plano de control. Puede escalar verticalmente el número de nodos del plano de control de 1 a 3, pero no puede reducir el número de 3 a 1.
El procedimiento de escalar verticalmente un clúster de carga de trabajo depende del tipo de clúster.
Siga el procedimiento Actualizar plantillas de máquinas de infraestructura en El libro de API del clúster, que cambia la plantilla de máquina del clúster.
El procedimiento descarga la plantilla de máquina existente del clúster, con un comando kubectl get
que puede construir de la siguiente manera:
kubectl get MACHINE-TEMPLATE-TYPE MACHINE-TEMPLATE-NAME -o yaml
Donde:
MACHINE-TEMPLATE-TYPE
es:
VsphereMachineTemplate
en vSphereAWSMachineTemplate
en Amazon Web Services (AWS)AzureMachineTemplate
en AzureMACHINE-TEMPLATE-NAME
es el nombre de la plantilla de máquina para los nodos del clúster que va a escalar, que sigue el siguiente formato:
CLUSTER-NAME-control-plane
para los nodos del plano de controlCLUSTER-NAME-worker
para los nodos de trabajoPor ejemplo:
kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml
Para escalar un clúster basado en clases de forma vertical, cambie la configuración de machine
en la definición del clúster, como se describe en Escale un clúster basado en clases a continuación.
Para escalar un clúster basado en clases de forma horizontal o vertical mediante su configuración de topology
:
Establezca kubectl
en el contexto del clúster de administración, por ejemplo:
kubectl config use-context management-cluster@admin
Ejecute kubectl edit cluster CLUSTER-NAME
y edite la configuración de su bloque topology
en controlPlane
y worker
.
Para escalar horizontalmente, cambie la configuración de replicas
. - Para escalar verticalmente, cambie la configuración en machine
.
Por ejemplo:
- name: controlPlane
value:
replicas: 3
machine:
diskGiB: 20
memoryMiB: 8192
numCPUs: 4
- name: worker
value:
replicas: 5
machine:
diskGiB: 20
memoryMiB: 8192
numCPUs: 4