Escalar clústeres

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.

Nota

Para escalar nodos en un grupo de nodos, consulte Actualizar grupos de nodos en Administrar grupos de nodos de diferentes tipos de máquina virtual.

Escalar nodos de trabajo con el Escalador automático de clústeres (MC independiente)

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.

Importante

Para 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 y max-size a sus objetos MachineDeployment 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:

  • Para los clústeres con un solo nodo de trabajo, como los clústeres dev, establezca AUTOSCALER_MIN_SIZE_0 y AUTOSCALER_MAX_SIZE_0.
  • Para clústeres con varios nodos de trabajo, como clústeres 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.

Agregar manualmente anotaciones de tamaño mínimo y tamaño máximo

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:

  1. 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.

  2. 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).

  3. Para cada MachineDeployment recién creada en el clúster:

    1. Añada una anotación min-size:

      kubectl annotate machinedeployment MD-NAME cluster.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.
    2. Añada una anotación max-size:

      kubectl annotate machinedeployment MD-NAME cluster.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.

Escalar un clúster horizontalmente

Puede escalar un clúster de TKG horizontalmente de dos maneras, según el tipo de clúster:

  • Todos los clústeres Utilice la CLI de Tanzu, como se describe inmediatamente a continuación
  • Clústeres de carga de trabajo basados en clases Cambie la configuración de 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.

Importante

No cambie el contexto ni edite el archivo .kube-tkg/config mientras se ejecutan las operaciones de Tanzu Kubernetes Grid.

  • Plano de control y nodos de trabajo: Las opciones --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.

Escalar un clúster verticalmente

El procedimiento de escalar verticalmente un clúster de carga de trabajo depende del tipo de clúster.

Clústeres basados en planes y TKC

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 vSphere
    • AWSMachineTemplate en Amazon Web Services (AWS)
    • AzureMachineTemplate en Azure
  • MACHINE-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 control
    • CLUSTER-NAME-worker para los nodos de trabajo

Por ejemplo:

kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml

Clústeres basados en clases

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.

Escalar un clúster basado en clases

Para escalar un clúster basado en clases de forma horizontal o vertical mediante su configuración de topology:

  1. Establezca kubectl en el contexto del clúster de administración, por ejemplo:

    kubectl config use-context management-cluster@admin
    
  2. 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
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon