Ajuste de escala automático de un clúster


En esta página, se muestra cómo realizar el ajuste de escala automático en los clústeres de Google Kubernetes Engine (GKE) estándar. Para obtener más información sobre cómo funciona el escalador automático de clústeres, consulta Escalador automático de clústeres.

Con los clústeres de Autopilot, no tienes que preocuparte por aprovisionar nodos o administrar los grupos de nodos, ya que los grupos de nodos se aprovisionan automáticamente mediante el aprovisionamiento automático de nodos, y se escalan de forma automática para cumplir con los requisitos de tus cargas de trabajo.

Usa el escalador automático de clústeres

En las siguientes secciones, se explica cómo usar el escalador automático de clústeres.

Crea un clúster con ajuste de escala automático

Puedes crear un clúster con el ajuste de escala automático habilitado mediante la CLI de Google Cloud o la consola de Google Cloud.

gcloud

Para crear un clúster con ajuste de escala automático habilitado, usa la marca --enable-autoscaling y especifica --min-nodes y --max-nodes.

gcloud container clusters create CLUSTER_NAME \
    --enable-autoscaling \
    --num-nodes NUM_NODES \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --region=COMPUTE_REGION

Reemplaza lo siguiente:

  • CLUSTER_NAME: es el nombre del clúster que se creará.
  • NUM_NODES: es la cantidad de nodos que se crearán en cada ubicación.
  • MIN_NODES: es la cantidad mínima de nodos que se deben escalar de forma automática para el grupo de nodos especificado por zona. A fin de especificar la cantidad mínima de nodos para todo el grupo de nodos en las versiones 1.24 y posteriores de GKE, usa --total-min-nodes. Las marcas --total-min-nodes y --total-max-nodes son mutuamente excluyentes con las marcas --min-nodes y --max-nodes.
  • MAX_NODES: la cantidad máxima de nodos que se escalarán de forma automática para el grupo de nodos especificado por zona. A fin de especificar la cantidad máxima de nodos para todo el grupo de nodos en las versiones 1.24 de GKE y posteriores, usa --total-max-nodes. Las marcas --total-min-nodes y --total-max-nodes son mutuamente excluyentes con las marcas --min-nodes y --max-nodes.
  • COMPUTE_REGION: es la región de Compute Engine del clúster. Para los clústeres zonales, usa --zone=COMPUTE_ZONE.

Ejemplo: Crea un clúster con ajuste de escala automático de nodos habilitado, y nodos mínimos y máximos

El siguiente comando crea un clúster con 90 nodos o 30 nodos en cada una de las 3 zonas presentes en la región. El ajuste de escala automático de nodos está habilitado y cambia la cantidad de nodos según la carga del clúster. El escalador automático de clústeres puede reducir el tamaño del grupo de nodos predeterminado a 15 nodos o aumentar el grupo de nodos a un máximo de 50 nodos por zona.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes=30 \
    --min-nodes=15 --max-nodes=50 \
    --region=us-central

Ejemplo: Crea un clúster con el ajuste de escala automático de nodos habilitado y el total de nodos

El siguiente comando crea un clúster con 30 nodos o 10 nodos en cada una de las 3 zonas presentes en la región. El ajuste de escala automático de nodos está habilitado y cambia la cantidad de nodos según la carga del clúster. En este ejemplo, el tamaño total del clúster puede ser de entre 10 y 60 nodos, sin importar si se distribuye entre zonas.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes 10 \
    --region us-central1 \
    --total-min-nodes 10  --total-max-nodes 60

Console

Para crear un clúster nuevo en el que el grupo de nodos predeterminado tenga habilitado el ajuste de escala automático, haz lo siguiente:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear.

  3. Configura tu clúster como desees.

  4. En el panel de navegación, en Grupos de nodos, haz clic en default-pool.

  5. Selecciona la casilla de verificación Habilitar ajuste de escala automático.

  6. Cambia los valores de los campos Cantidad mínima de nodos y Cantidad máxima de nodos.

  7. Haz clic en Crear.

Agrega un grupo de nodos con ajuste de escala automático

Puedes crear un grupo de nodos con el ajuste de escala automático habilitado mediante la CLI de gcloud o la consola de Google Cloud.

gcloud

Para agregar un grupo de nodos con ajuste de escala automático a un clúster existente, usa el siguiente comando:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-autoscaling \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --region=COMPUTE_REGION

Reemplaza lo siguiente:

  • POOL_NAME: es el nombre del grupo de nodos deseado.
  • CLUSTER_NAME: es el nombre del clúster en el que se creó el grupo de nodos.
  • MIN_NODES: es la cantidad mínima de nodos que se deben escalar de forma automática para el grupo de nodos especificado por zona. A fin de especificar la cantidad mínima de nodos para todo el grupo de nodos en las versiones 1.24 y posteriores de GKE, usa --total-min-nodes. Las marcas --total-min-nodes y --total-max-nodes son mutuamente excluyentes con las marcas --min-nodes y --max-nodes.
  • MAX_NODES: la cantidad máxima de nodos que se escalarán de forma automática para el grupo de nodos especificado por zona. A fin de especificar la cantidad máxima de nodos para todo el grupo de nodos en las versiones 1.24 de GKE y posteriores, usa --total-max-nodes. Las marcas --total-min-nodes y --total-max-nodes son mutuamente excluyentes con las marcas --min-nodes y --max-nodes.
  • COMPUTE_REGION: es la región de Compute Engine del clúster. Para los clústeres zonales, usa --zone=COMPUTE_ZONE.

Ejemplo: Agrega un grupo de nodos con el ajuste de escala automático de nodos habilitado

El siguiente comando crea un grupo de nodos con ajuste de escala automático que escala el grupo de nodos a un máximo de 5 nodos y un mínimo de 1:

gcloud container node-pools create my-node-pool \
    --cluster my-cluster \
    --enable-autoscaling \
    --min-nodes 1 --max-nodes 5 \
    --zone us-central1-c

Console

Para agregar un grupo de nodos con ajuste de escala automático a un clúster existente, haz lo siguiente:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster que deseas modificar.

  3. Haz clic en Agregar grupo de nodos.

  4. Configura el grupo de nodos como desees.

  5. En Tamaño, selecciona la casilla de verificación Habilitar ajuste de escala automático.

  6. Cambia los valores de los campos Cantidad mínima de nodos y Cantidad máxima de nodos.

  7. Haz clic en Crear.

Habilita el ajuste de escala automático para un grupo de nodos existente

Puedes habilitar el ajuste de escala automático para un grupo de nodos existente con la CLI de gcloud o la consola de Google Cloud.

gcloud

A fin de habilitar el ajuste de escala automático para un grupo de nodos existente, usa el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoscaling \
    --node-pool=POOL_NAME \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --region=COMPUTE_REGION

Reemplaza lo siguiente:

  • CLUSTER_NAME: es el nombre del clúster que se actualizará.
  • POOL_NAME: es el nombre del grupo de nodos deseado. Si solo tienes un grupo de nodos, proporciona default-pool como valor.
  • MIN_NODES: es la cantidad mínima de nodos que se deben escalar de forma automática para el grupo de nodos especificado por zona. A fin de especificar la cantidad mínima de nodos para todo el grupo de nodos en las versiones 1.24 y posteriores de GKE, usa --total-min-nodes. Las marcas --total-min-nodes y --total-max-nodes son mutuamente excluyentes con las marcas --min-nodes y --max-nodes.
  • MAX_NODES: la cantidad máxima de nodos que se escalarán de forma automática para el grupo de nodos especificado por zona. A fin de especificar la cantidad máxima de nodos para todo el grupo de nodos en las versiones 1.24 de GKE y posteriores, usa --total-max-nodes. Las marcas --total-min-nodes y --total-max-nodes son mutuamente excluyentes con las marcas --min-nodes y --max-nodes.
  • COMPUTE_REGION: es la región de Compute Engine del clúster. Para los clústeres zonales, usa --zone=COMPUTE_ZONE.

Console

Para habilitar el ajuste de escala automático en un grupo de nodos existente, sigue estos pasos:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster que deseas modificar.

  3. Haz clic en la pestaña Nodos.

  4. En Grupos de nodos, haz clic en el nombre del grupo de nodos que deseas modificar y, luego, en Editar.

  5. En Tamaño, selecciona la casilla de verificación Habilitar ajuste de escala automático.

  6. Cambia los valores de los campos Cantidad mínima de nodos y Cantidad máxima de nodos.

  7. Haz clic en Guardar.

Verifica que el ajuste de escala automático para el grupo de nodos existente esté habilitado

Debes verificar que tu clúster use el ajuste de escala automático con la CLI de Google Cloud o la consola de Google Cloud.

gcloud

Describe los grupos de nodos del clúster:

gcloud container node-pools describe NODE_POOL_NAME --cluster=CLUSTER_NAME |grep autoscaling -A 1

Reemplaza lo siguiente:

  • POOL_NAME: el nombre del grupo de nodos nuevo que elijas.
  • CLUSTER_NAME: el nombre del clúster

Si el ajuste de escala automático está habilitado, el resultado es similar al siguiente:

autoscaling:
  enabled: true

Console

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster que deseas verificar.

  3. Haz clic en la pestaña Nodos.

  4. En Grupos de nodos, verifica que el estado del grupo de nodos sea Autoscalling.

Crea un grupo de nodos que priorice la optimización de las reservas sin usar

Puedes usar la marca --location_policy=ANY cuando crees un grupo de nodos para indicarle al escalador automático del clúster que priorice el uso de las reservas sin usar:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location_policy=ANY

Reemplaza lo siguiente:

  • POOL_NAME: el nombre del grupo de nodos nuevo que elijas.
  • CLUSTER_NAME: el nombre del clúster

Inhabilita el ajuste de escala automático para un grupo de nodos existente

Puedes inhabilitar el ajuste de escala automático para un grupo de nodos existente con la CLI de gcloud o la consola de Google Cloud.

gcloud

A fin de inhabilitar el ajuste de escala automático para un grupo de nodos específico, usa la marca --no-enable-autoscaling:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-autoscaling \
    --node-pool=POOL_NAME \
    --region=COMPUTE_REGION

Reemplaza lo siguiente:

  • CLUSTER_NAME: es el nombre del clúster que se actualizará.
  • POOL_NAME: es el nombre del grupo de nodos deseado.
  • COMPUTE_REGION: es la región de Compute Engine del clúster. Para los clústeres zonales, usa --zone=COMPUTE_ZONE.

El tamaño del clúster se establece en el tamaño del grupo de nodos predeterminado actual del clúster, que se puede actualizar de forma manual.

Console

Para inhabilitar el ajuste de escala automático en un grupo de nodos específico, sigue estos pasos:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster que deseas modificar.

  3. Haz clic en la pestaña Nodos.

  4. En Grupos de nodos, haz clic en el nombre del grupo de nodos que deseas modificar y, luego, en Editar.

  5. En Tamaño, desmarca la casilla de verificación Habilitar ajuste de escala automático.

  6. Haz clic en Guardar.

Cambia el tamaño de un grupo de nodos

Para los clústeres con el ajuste de escala automático habilitado, el escalador automático del clúster cambia el tamaño de los grupos de nodos de forma automática dentro de los límites especificados por el tamaño mínimo (--min-nodes) y el tamaño máximo (--max-nodes) o el tamaño total mínimo (--total-min-nodes) y el tamaño total máximo (--total-max-nodes). Estas marcas son mutuamente excluyentes. No puedes cambiar el tamaño de un grupo de nodos de forma manual modificando estos valores.

Si deseas cambiar de forma manual el tamaño de un grupo de nodos en un clúster que tiene habilitado el ajuste de escala automático, haz lo siguiente:

  1. Inhabilita el ajuste de escala automático en el grupo de nodos.
  2. Cambia el tamaño del clúster de forma manual.
  3. Vuelve a habilitar el ajuste de escala automático y especifica el tamaño mínimo y máximo del grupo de nodos.

Evita que los Pods se programen en nodos seleccionados

Puedes usar taints startup o status para evitar que se programen Pods en nodos seleccionados, según el caso de uso.

Esta función está disponible en GKE en la versión 1.28 y versiones posteriores.

Taints de inicio

Usa taints startup cuando haya una operación que se deba completar antes de que cualquier Pod pueda ejecutarse en el nodo. Por ejemplo, los Pods no deben ejecutarse hasta que finalice la instalación de los controladores en el nodo.

El escalador automático del clúster trata a los nodos con taints startup como no listos, pero lo tiene en cuenta durante la lógica de escalamiento vertical, en el caso de que estén listos en breve.

Los taints de estado se definen como todos los taints con el prefijo startup-taint.cluster-autoscaler.kubernetes.io/

Taints de estado

Usa taints status cuando GKE no deba usar un nodo determinado para ejecutar Pods.

El escalador automático de clústeres considera que los nodos contaminados con taints status están listos, pero los ignora durante la lógica de escalamiento vertical. Aunque el nodo con taint está listo, no se debe ejecutar ningún Pod. Si los Pods necesitan más recursos, GKE escala verticalmente el clúster y, además, ignora los nodos con taints.

Los taints de estado se definen como todos los taints con el prefijo status-taint.cluster-autoscaler.kubernetes.io/

Taints de omisión

Los taints de omisión se definen como todos los taints con el prefijo ignore-taint.cluster-autoscaler.kubernetes.io/

Soluciona problemas

Para obtener sugerencias sobre cómo solucionar problemas, consulta las siguientes páginas:

¿Qué sigue?