Acerca del aprovisionamiento automático de nodos


En esta página se explica cómo funciona el aprovisionamiento automático de nodos en los clústeres Estándar de Google Kubernetes Engine (GKE). Con el aprovisionamiento automático de nodos, los nodos se escalan automáticamente para cumplir los requisitos de tus cargas de trabajo.

Con los clústeres Autopilot, no tienes que aprovisionar nodos ni gestionar grupos de nodos manualmente, ya que GKE gestiona automáticamente el escalado y el aprovisionamiento de nodos.

Ventajas del aprovisionamiento automático de nodos

El aprovisionamiento automático de nodos gestiona y escala automáticamente un conjunto de grupos de nodos en nombre del usuario. Sin el aprovisionamiento automático de nodos, la herramienta de adaptación dinámica del clúster de GKE solo crea nodos a partir de los grupos de nodos creados por el usuario. Con el aprovisionamiento automático de nodos, GKE crea y elimina grupos de nodos automáticamente.

Funciones no compatibles

El aprovisionamiento automático de nodos no crea grupos de nodos que usen ninguna de las siguientes funciones. Sin embargo, la herramienta de escalado automático de clústeres escala los nodos de los grupos de nodos existentes con estas funciones:

Cómo funciona el aprovisionamiento automático de nodos

El aprovisionamiento automático de nodos es un mecanismo de la herramienta de ajuste automático de escala de clústeres. La herramienta de adaptación dinámica del clúster solo escala los grupos de nodos que ya existen. Si el aprovisionamiento automático de nodos está habilitado, la herramienta de adaptación dinámica del clúster puede crear grupos de nodos automáticamente en función de las especificaciones de los pods no programables.

El aprovisionamiento automático de nodos crea grupos de nodos en función de la siguiente información:

Límites de recursos

El aprovisionamiento automático de nodos y la herramienta de adaptación dinámica de clústeres tienen límites en los siguientes niveles:

  • Nivel de grupo de nodos: los grupos de nodos aprovisionados automáticamente están limitados a 1000 nodos.
  • Nivel de clúster:
    • Los límites de aprovisionamiento automático que definas se aplicarán en función del total de recursos de CPU y memoria que se usen en todos los grupos de nodos, no solo en los aprovisionados automáticamente.
    • La herramienta de ajuste automático de escala del clúster no crea nodos si al hacerlo se supera uno de los límites definidos. Si ya se han superado los límites, GKE no elimina los nodos.

Separación de cargas de trabajo

Si los pods pendientes tienen afinidades y tolerancias de nodos, el aprovisionamiento automático de nodos puede aprovisionar nodos con etiquetas y taints coincidentes.

El aprovisionamiento automático de nodos puede crear grupos de nodos con etiquetas y taints si se cumplen todas las condiciones siguientes:

  • Un pod pendiente requiere un nodo con una clave y un valor de etiqueta específicos.
  • El pod tiene una tolerancia para una contaminación con la misma clave.
  • La tolerancia es para el efecto NoSchedule, el efecto NoExecute o todos los efectos.

Para obtener instrucciones, consulta Configurar la separación de cargas de trabajo en GKE.

Limitaciones del uso de etiquetas para separar cargas de trabajo

El aprovisionamiento automático de nodos activa la creación de un nuevo grupo de nodos cuando usas etiquetas compatibles con esta función, como cloud.google.com/gke-spot o familias de máquinas. Puedes usar otras etiquetas en tus manifiestos de Pod para acotar los nodos en los que GKE coloca los pods, pero GKE no usará estas etiquetas para aprovisionar grupos de nodos nuevos. Para ver la lista de etiquetas que no activan explícitamente la creación de un grupo de nodos, consulta Limitaciones de la separación de cargas de trabajo con taints y tolerancias.

Eliminación de grupos de nodos aprovisionados automáticamente

Si no hay nodos en un grupo de nodos aprovisionado automáticamente, GKE elimina el grupo de nodos. GKE no elimina los grupos de nodos que no se aprovisionan automáticamente.

Tipos de máquinas admitidos

El aprovisionamiento automático de nodos tiene en cuenta los requisitos de los pods de tu clúster para determinar qué tipo de nodos se adapta mejor a esos pods.

De forma predeterminada, GKE usa la serie de máquinas E2, a menos que se cumpla alguna de las siguientes condiciones:

  • La carga de trabajo solicita una función que no está disponible en la serie de máquinas E2. Por ejemplo, si la carga de trabajo solicita una GPU, se usa la serie de máquinas N1 para el nuevo grupo de nodos.
  • La carga de trabajo solicita recursos de TPU. Para obtener más información sobre las TPUs, consulta la introducción a las TPUs de Cloud.
  • La carga de trabajo usa la etiqueta machine-family. Para obtener más información, consulta Usar una familia de máquinas personalizada.

Si el pod solicita GPUs, el aprovisionamiento automático de nodos asigna un tipo de máquina lo suficientemente grande como para admitir el número de GPUs que solicita el pod. El número de GPUs restringe la CPU y la memoria que puede tener el nodo. Para obtener más información, consulta Plataformas de GPU.

Los tipos de máquina C4D se admiten en GKE 1.32.3-gke.1717000 y versiones posteriores, y los tipos de máquina C3D se admiten en GKE 1.28 y versiones posteriores.

Imágenes de nodos admitidas

El aprovisionamiento automático de nodos crea grupos de nodos con una de las siguientes imágenes de nodo:

  • Container-Optimized OS (cos_containerd).
  • Ubuntu (ubuntu_containerd).

Aceleradores de aprendizaje automático compatibles

El aprovisionamiento automático de nodos puede crear grupos de nodos con aceleradores de hardware, como GPUs y Cloud TPUs. El aprovisionamiento automático de nodos admite TPUs en GKE versión 1.28 y posteriores.

GPUs

Si el pod solicita GPUs, el aprovisionamiento automático de nodos asigna un tipo de máquina lo suficientemente grande como para admitir el número de GPUs que solicita el pod. El número de GPUs restringe la CPU y la memoria que puede tener el nodo. Para obtener más información, consulta Plataformas de GPU.

TPUs de Cloud

GKE admite unidades de procesamiento de tensor (TPUs) para acelerar las cargas de trabajo de aprendizaje automático. Tanto el grupo de nodos de segmento de TPU de un solo host como el grupo de nodos de segmento de TPU de varios hosts admiten el autoescalado y el aprovisionamiento automático.

Con la marca --enable-autoprovisioning en un clúster de GKE, GKE crea o elimina grupos de nodos de slices de TPU de un solo host o de varios hosts con una versión y una topología de TPU que cumplan los requisitos de las cargas de trabajo pendientes.

Cuando usas --enable-autoscaling, GKE escala el grupo de nodos en función de su tipo, de la siguiente manera:

  • Grupo de nodos de segmento de TPU de un solo host: GKE añade o elimina nodos de TPU en el grupo de nodos que ya existe. El grupo de nodos puede contener cualquier número de nodos de TPU entre cero y el tamaño máximo del grupo de nodos, determinado por las marcas --max-nodes y --total-max-nodes. Cuando se escala el grupo de nodos, todos los nodos de TPU del grupo de nodos tienen el mismo tipo de máquina y la misma topología. Para obtener más información sobre cómo crear un grupo de nodos de una porción de TPU de un solo host, consulta Crear un grupo de nodos.

  • Grupo de nodos de un segmento de TPU multihost: GKE escala de forma atómica el grupo de nodos de cero al número de nodos necesarios para cumplir la topología de la TPU. Por ejemplo, si tienes un grupo de nodos de TPU con el tipo de máquina ct5lp-hightpu-4t y una topología 16x16, el grupo de nodos contendrá 64 nodos. El escalador automático de GKE se asegura de que este grupo de nodos tenga exactamente 0 o 64 nodos. Cuando se reduce la escala, GKE expulsa todos los pods programados y reduce a cero todo el grupo de nodos. Para obtener más información sobre cómo crear un grupo de nodos de una porción de TPU de varios hosts, consulta Crear un grupo de nodos.

Si una porción de TPU específica no tiene ningún pod en ejecución o pendiente de programación, GKE reduce la escala del grupo de nodos. Los grupos de nodos de slices de TPU de varios hosts se reducen de forma atómica. Los grupos de nodos de segmentos de TPU de un solo host se reducen eliminando segmentos de TPU de un solo host individuales.

Cuando habilitas el aprovisionamiento automático de nodos con TPUs, GKE toma decisiones de escalado en función de los valores definidos en la solicitud de Pod. El siguiente manifiesto es un ejemplo de una especificación de Deployment que da como resultado un grupo de nodos que contiene un segmento de TPU v4 con una topología 2x2x2 y dos máquinas ct4p-hightpu-4t:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tpu-workload
      labels:
        app: tpu-workload
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-tpu
      template:
        metadata:
          labels:
            app: nginx-tpu
        spec:
          nodeSelector:
            cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
            cloud.google.com/gke-tpu-topology: 2x2x2
            cloud.google.com/reservation-name: my-reservation
          containers:
          - name: nginx
            image: nginx:1.14.2
            resources:
              requests:
                google.com/tpu: 4
              limits:
               google.com/tpu: 4
            ports:
            - containerPort: 80

Donde:

  • cloud.google.com/gke-tpu-accelerator: la versión y el tipo de TPU. Por ejemplo, puedes usar cualquiera de las siguientes opciones:
    • TPU v4 con tpu-v4-podslice
    • TPU v5e con tpu-v5-lite-podslice.
    • TPU v5p con tpu-v5p-slice.
    • TPU Trillium (v6e) con tpu-v6e-slice.
  • cloud.google.com/gke-tpu-topology: número y disposición física de los chips de TPU en una porción de TPU. Cuando creas un grupo de nodos y habilitas el aprovisionamiento automático de nodos, seleccionas la topología de TPU. Para obtener más información sobre las topologías de las TPU de Cloud, consulta las configuraciones de TPU.
  • limit.google.com/tpu: número de chips de TPU en la VM de TPU. La mayoría de las configuraciones solo tienen un valor correcto. Sin embargo, la tpu-v5-lite-podslice con la configuración de topología 2x4:
    • Si especificas google.com/tpu = 8, el aprovisionamiento automático de nodos aumenta la escala del grupo de nodos de la porción de TPU de un solo host añadiendo una máquina ct5lp-hightpu-8t.
    • Si especificas google.com/tpu = 4, el aprovisionamiento automático de nodos crea un pool de nodos de segmento de TPU multihost con dos máquinas ct5lp-hightpu-4t.
  • cloud.google.com/reservation-name: nombre de la reserva que usa la carga de trabajo. Si se omite, la carga de trabajo no usará ninguna reserva.

Si asignas el tipo de acelerador tpu-v6e-slice (para indicar TPU Trillium), el aprovisionamiento automático de nodos toma las siguientes decisiones:

Valores definidos en el manifiesto del pod Decidido por el aprovisionamiento automático de nodos
gke-tpu-topology limit.google.com/tpu Tipo de grupo de nodos Tamaño del grupo de nodos Tipo de máquina
1x1 1 Slice de TPU de un solo host Flexible ct6e-standard-1t
2x2 4 Slice de TPU de un solo host Flexible ct6e-standard-4t
2x4 8 Slice de TPU de un solo host Flexible ct6e-standard-8t
2x4 4 Slice de TPU con varios hosts 2 ct6e-standard-4t
4x4 4 Slice de TPU con varios hosts 4 ct6e-standard-4t
4x8 4 Slice de TPU con varios hosts 8 ct6e-standard-4t
8x8 4 Slice de TPU con varios hosts 16 ct6e-standard-4t
8x16 4 Slice de TPU con varios hosts 32 ct6e-standard-4t
16x16 4 Slice de TPU con varios hosts 64 ct6e-standard-4t

Si asignas el tipo de acelerador tpu-v4-podslice (para indicar TPU v4), el aprovisionamiento automático de nodos tomará las siguientes decisiones:

Valores definidos en el manifiesto del pod Decidido por el aprovisionamiento automático de nodos
gke-tpu-topology limit.google.com/tpu Tipo de grupo de nodos Tamaño del grupo de nodos Tipo de máquina
2x2x1 4 Slice de TPU de un solo host Flexible ct4p-hightpu-4t
{A}x{B}x{C} 4 Slice de TPU con varios hosts {A}x{B}x{C}/4 ct4p-hightpu-4t

El producto de {A}x{B}x{C} define el número de chips del grupo de nodos. Por ejemplo, puedes definir una topología pequeña de 64 chips con combinaciones como 4x4x4. Si usas topologías de más de 64 chips, los valores que asignes a {A}, {B} y {C} deben cumplir las siguientes condiciones:

  • {A}, {B} y {C} son todos menores o iguales que cuatro, o múltiplos de cuatro.
  • La topología más grande admitida es 12x16x16.
  • Los valores asignados mantienen el patrón A ≤ B ≤ C. Por ejemplo, 2x2x4 o 2x4x4 para topologías pequeñas.

Si asignas el tipo de acelerador tpu-v5-lite-podslice (para indicar TPU v5e con tipos de máquina que empiezan por ct5lp-), el aprovisionamiento automático de nodos tomará las siguientes decisiones:

Valores definidos en el manifiesto del pod Decidido por el aprovisionamiento automático de nodos
gke-tpu-topology limit.google.com/tpu Tipo de grupo de nodos Tamaño del grupo de nodos Tipo de máquina
1x1 1 Slice de TPU de un solo host Flexible ct5lp-hightpu-1t
2x2 4 Slice de TPU de un solo host Flexible ct5lp-hightpu-4t
2x4 8 Slice de TPU de un solo host Flexible ct5lp-hightpu-8t
2x41 4 Slice de TPU con varios hosts 2 (8/4) ct5lp-hightpu-4t
4x4 4 Slice de TPU con varios hosts 4 (16/4) ct5lp-hightpu-4t
4x8 4 Slice de TPU con varios hosts 8 (32/4) ct5lp-hightpu-4t
4x8 4 Slice de TPU con varios hosts 16 (32/4) ct5lp-hightpu-4t
8x8 4 Slice de TPU con varios hosts 16 (64/4) ct5lp-hightpu-4t
8x16 4 Slice de TPU con varios hosts 32 (128/4) ct5lp-hightpu-4t
16x16 4 Slice de TPU con varios hosts 64 (256/4) ct5lp-hightpu-4t
  1. Caso especial en el que el tipo de máquina depende del valor que hayas definido en el campo de límites google.com/tpu.

Para saber cómo configurar el aprovisionamiento automático de nodos, consulta Configurar las TPUs.

Compatibilidad con máquinas virtuales de acceso puntual

El aprovisionamiento automático de nodos permite crear grupos de nodos basados en Spot VMs.

Solo se considera la creación de grupos de nodos basados en máquinas virtuales de ráfaga si existen pods no programables con una tolerancia para el taint cloud.google.com/gke-spot="true":NoSchedule. La marca se aplica automáticamente a los nodos de los grupos de nodos aprovisionados automáticamente que se basan en VMs de Spot.

Puedes combinar el uso de la tolerancia con una regla de nodeSelector o de afinidad de nodos para las etiquetas de nodos cloud.google.com/gke-spot="true" o cloud.google.com/gke-provisioning=spot (en nodos que ejecuten GKE versión 1.25.5-gke.2500 o posterior) para asegurarte de que tus cargas de trabajo solo se ejecuten en grupos de nodos basados en VMs Spot.

Compatibilidad con pods que solicitan almacenamiento efímero

El aprovisionamiento automático de nodos permite crear grupos de nodos cuando los pods solicitan almacenamiento efímero. El tamaño del disco de arranque aprovisionado en los grupos de nodos es constante para todos los grupos de nodos aprovisionados automáticamente. El tamaño del disco de arranque se puede personalizar.

El valor predeterminado es 100 GiB. No se admite el almacenamiento efímero con copia de seguridad en SSDs locales.

El aprovisionamiento automático de nodos solo aprovisionará un grupo de nodos si el almacenamiento efímero asignable de un nodo con un disco de arranque especificado es mayor o igual que la solicitud de almacenamiento efímero de un pod pendiente. Si la solicitud de almacenamiento efímero es superior a lo que se puede asignar, el aprovisionamiento automático de nodos no aprovisionará un grupo de nodos. Los tamaños de disco de los nodos no se configuran de forma dinámica en función de las solicitudes de almacenamiento efímero de los pods pendientes.

Limitaciones de escalabilidad

El aprovisionamiento automático de nodos tiene las mismas limitaciones que la herramienta de ajuste automático de escala de clústeres.

También debes tener en cuenta los límites de los grupos de nodos para las cargas de trabajo distintas. Una carga de trabajo distinta hace referencia al uso de la separación de cargas de trabajo para indicar a GKE que separen los pods en diferentes nodos, que coloque los pods en nodos que cumplan criterios específicos o que programe cargas de trabajo específicas juntas.

El aprovisionamiento automático de nodos siempre prefiere usar grupos de nodos compatibles que ya existan en lugar de crear uno nuevo. La importancia de esta preferencia aumenta a medida que crece el número de grupos de nodos del clúster. A medida que el número de grupos de nodos distintos se acerca al límite admitido, el aprovisionamiento automático de nodos reduce la prioridad de la creación de grupos de nodos. Para obtener más información sobre los límites de los clústeres, consulta la sección sobre límites y prácticas recomendadas del artículo Planificar clústeres grandes.

En los clústeres con muchos requisitos de carga de trabajo diferentes, recomendamos usar clases de computación personalizadas.

Siguientes pasos