En esta página se explica cómo autoescalar los clústeres Estándar de Google Kubernetes Engine (GKE). Para obtener información sobre cómo funciona la herramienta de adaptación dinámica de clústeres, consulta Adaptación dinámica de clústeres.
Con los clústeres Autopilot, no tienes que preocuparte por aprovisionar nodos ni gestionar grupos de nodos, ya que estos se aprovisionan automáticamente mediante el aprovisionamiento automático de nodos y se escalan automáticamente para satisfacer los requisitos de tus cargas de trabajo.
Usar la herramienta de adaptación dinámica de clústeres
En las siguientes secciones se explica cómo usar la herramienta de adaptación dinámica de clúster.
Crear un clúster con autoescalado
Puedes crear un clúster con el escalado automático habilitado mediante la CLI de Google Cloud o la Google Cloud consola.
gcloud
Para crear un clúster con el autoescalado 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 \
--location=CONTROL_PLANE_LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster que se va a crear.NUM_NODES
: el número de nodos que se crearán en cada ubicación.MIN_NODES
: el número mínimo de nodos que se escalarán automáticamente para el grupo de nodos especificado por zona. Para especificar el número mínimo de nodos de 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
se excluyen mutuamente con las marcas--min-nodes
y--max-nodes
.MAX_NODES
: el número máximo de nodos que se pueden escalar automáticamente en el grupo de nodos especificado por zona. Para especificar el número máximo de nodos de todo el grupo de nodos en GKE 1.24 y versiones posteriores, usa--total-max-nodes
. Las marcas--total-min-nodes
y--total-max-nodes
se excluyen mutuamente con las marcas--min-nodes
y--max-nodes
.CONTROL_PLANE_LOCATION
: la ubicación de Compute Engine del plano de control de tu clúster. Proporciona una región para los clústeres regionales o una zona para los clústeres zonales.
Ejemplo: crear un clúster con el autoescalado de nodos habilitado y un número mínimo y máximo de nodos
El siguiente comando crea un clúster con 90 nodos, es decir, 30 nodos en cada una de las 3 zonas de la región. El autoescalado de nodos está habilitado y cambia el tamaño del número de nodos en función de 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 hasta 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 \
--location=us-central
Ejemplo: crear un clúster con el autoescalado de nodos habilitado y el número total de nodos
El siguiente comando crea un clúster con 30 nodos, es decir, 10 nodos en cada una de las 3 zonas de la región. El autoescalado de nodos está habilitado y cambia el tamaño del número de nodos en función de la carga del clúster. En este ejemplo, el tamaño total del clúster puede ser de entre 10 y 60 nodos, independientemente de la distribución entre zonas.
gcloud container clusters create my-cluster --enable-autoscaling \
--num-nodes 10 \
--location us-central1 \
--total-min-nodes 10 --total-max-nodes 60
Consola
Para crear un clúster en el que el grupo de nodos predeterminado tenga habilitado el escalado automático, sigue estos pasos:
En la Google Cloud consola, ve a la página Crear un clúster de Kubernetes.
Configura el clúster a tu gusto.
En el panel de navegación, ve a Grupos de nodos y haz clic en default-pool.
Seleccione la casilla Habilitar autoescalado.
Cambie los valores de los campos Número mínimo de nodos y Número máximo de nodos como quiera.
Haz clic en Crear.
Agregar un grupo de nodos con autoescalado
Puedes crear un grupo de nodos con el autoescalado habilitado mediante la CLI de gcloud o la Google Cloud consola.
gcloud
Para añadir un grupo de nodos con autoescalado a un clúster, usa el siguiente comando:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-autoscaling \
--min-nodes=MIN_NODES \
--max-nodes=MAX_NODES \
--location=CONTROL_PLANE_LOCATION
Haz los cambios siguientes:
POOL_NAME
: el nombre del grupo de nodos que quieras.CLUSTER_NAME
: el nombre del clúster en el que se crea el grupo de nodos.MIN_NODES
: el número mínimo de nodos que se escalarán automáticamente para el grupo de nodos especificado por zona. Para especificar el número mínimo de nodos de 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
se excluyen mutuamente con las marcas--min-nodes
y--max-nodes
.MAX_NODES
: el número máximo de nodos que se pueden escalar automáticamente en el grupo de nodos especificado por zona. Para especificar el número máximo de nodos de todo el grupo de nodos en GKE 1.24 y versiones posteriores, usa--total-max-nodes
. Las marcas--total-min-nodes
y--total-max-nodes
se excluyen mutuamente con las marcas--min-nodes
y--max-nodes
.CONTROL_PLANE_LOCATION
: la ubicación de Compute Engine del plano de control de tu clúster. Proporciona una región para los clústeres regionales o una zona para los clústeres zonales.
Ejemplo: Añadir un grupo de nodos con el autoescalado de nodos habilitado
El siguiente comando crea un grupo de nodos con autoescalado de nodos que escala el grupo de nodos a un máximo de 5 nodos y un mínimo de 1 nodo:
gcloud container node-pools create my-node-pool \
--cluster my-cluster \
--enable-autoscaling \
--min-nodes 1 --max-nodes 5 \
--location us-central1-c
Consola
Para añadir un grupo de nodos con autoescalado a un clúster, sigue estos pasos:
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
En la lista de clústeres, haga clic en el nombre del clúster que quiera modificar.
Haz clic en add_box Añadir grupo de nodos.
Configura el grupo de nodos a tu gusto.
En Tamaño, marque la casilla Habilitar escalado automático.
Cambia los valores de los campos Número mínimo de nodos y Número máximo de nodos como quieras.
Haz clic en Crear.
Habilitar el autoescalado de un grupo de nodos existente
Puedes habilitar el autoescalado en un grupo de nodos que ya tengas con la CLI de gcloud o la Google Cloud consola.
gcloud
Para habilitar el autoescalado en un grupo de nodos, usa el siguiente comando:
gcloud container clusters update CLUSTER_NAME \
--enable-autoscaling \
--node-pool=POOL_NAME \
--min-nodes=MIN_NODES \
--max-nodes=MAX_NODES \
--location=CONTROL_PLANE_LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster que se va a actualizar.POOL_NAME
: el nombre del grupo de nodos que quieras. Si solo tiene un grupo de nodos, indiquedefault-pool
como valor.MIN_NODES
: el número mínimo de nodos que se escalarán automáticamente para el grupo de nodos especificado por zona. Para especificar el número mínimo de nodos de 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
se excluyen mutuamente con las marcas--min-nodes
y--max-nodes
.MAX_NODES
: el número máximo de nodos que se pueden escalar automáticamente en el grupo de nodos especificado por zona. Para especificar el número máximo de nodos de todo el grupo de nodos en GKE 1.24 y versiones posteriores, usa--total-max-nodes
. Las marcas--total-min-nodes
y--total-max-nodes
se excluyen mutuamente con las marcas--min-nodes
y--max-nodes
.CONTROL_PLANE_LOCATION
: la ubicación de Compute Engine del plano de control de tu clúster. Proporciona una región para los clústeres regionales o una zona para los clústeres zonales.
Consola
Para habilitar el autoescalado en un grupo de nodos:
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
En la lista de clústeres, haga clic en el nombre del clúster que quiera modificar.
Haz clic en la pestaña Nodos.
En Grupos de nodos, haga clic en el nombre del grupo de nodos que quiera modificar y, a continuación, en edit Editar.
En Tamaño, marque la casilla Habilitar escalado automático.
Cambia los valores de los campos Número mínimo de nodos y Número máximo de nodos como quieras.
Haz clic en Guardar.
Verificar que el escalado automático del grupo de nodos esté habilitado
Para verificar que tu clúster usa el autoescalado, puedes usar la CLI de Google Cloud o la Google Cloud consola.
gcloud
Describe los grupos de nodos del clúster:
gcloud container node-pools describe NODE_POOL_NAME --cluster=CLUSTER_NAME |grep autoscaling -A 1
Haz los cambios siguientes:
POOL_NAME
: el nombre del nuevo grupo de nodos que elijas.CLUSTER_NAME
: el nombre del clúster.
Si el escalado automático está habilitado, el resultado será similar al siguiente:
autoscaling:
enabled: true
Consola
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
En la lista de clústeres, haz clic en el nombre del clúster que quieras verificar.
Haz clic en la pestaña Nodos.
En Grupos de nodos, comprueba el estado del grupo de nodos
Autoscalling
.
Crear un grupo de nodos que priorice la optimización de las reservas no utilizadas
Puedes usar la marca --location_policy=ANY
al crear un grupo de nodos para indicar a la herramienta de adaptación dinámica de clústeres que priorice el uso de las reservas sin utilizar:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--location_policy=ANY
Haz los cambios siguientes:
POOL_NAME
: el nombre del nuevo grupo de nodos que elijas.CLUSTER_NAME
: el nombre del clúster.
Inhabilitar el autoescalado de un grupo de nodos existente
Puedes inhabilitar el autoescalado de un grupo de nodos con la CLI de gcloud o la Google Cloud consola.
gcloud
Para inhabilitar el autoescalado de 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 \
--location=CONTROL_PLANE_LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster que se va a actualizar.POOL_NAME
: el nombre del grupo de nodos que quieras.CONTROL_PLANE_LOCATION
: la ubicación de Compute Engine del plano de control de tu clúster. Proporciona una región para los clústeres regionales o una zona para los clústeres zonales.
El tamaño del clúster se fija en el tamaño predeterminado actual del grupo de nodos del clúster, que se puede actualizar manualmente.
Consola
Para inhabilitar el autoescalado en un grupo de nodos específico, sigue estos pasos:
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
En la lista de clústeres, haga clic en el nombre del clúster que quiera modificar.
Haz clic en la pestaña Nodos.
En Grupos de nodos, haga clic en el nombre del grupo de nodos que quiera modificar y, a continuación, en edit Editar.
En Tamaño, desmarque la casilla Habilitar escalado automático.
Haz clic en Guardar.
Cambiar el tamaño de un grupo de nodos
En los clústeres con el autoescalado habilitado, el autoescalador de clústeres cambia automáticamente el tamaño de los grupos de nodos dentro de los límites especificados por los valores de tamaño mínimo (--min-nodes
) y tamaño máximo (--max-nodes
) o por los valores de tamaño total mínimo (--total-min-nodes
) y tamaño total máximo (--total-max-nodes
). Estas marcas son mutuamente excluyentes. No puedes cambiar manualmente el tamaño de un grupo de nodos modificando estos valores.
Si quieres cambiar manualmente el tamaño de un grupo de nodos de tu clúster que tenga habilitado el autoescalado, haz lo siguiente:
- Inhabilita el autoescalado en el grupo de nodos.
- Cambia el tamaño del clúster manualmente.
- Vuelve a habilitar el autoescalado y especifica el tamaño mínimo y máximo del grupo de nodos.
Impedir que se programen pods en nodos seleccionados
Puedes usar los taints startup
o status
para evitar que los pods se programen en nodos concretos, en función del caso práctico.
Esta función está disponible en GKE en la versión 1.28 y posteriores.
Intolerancias de inicio
Usa startup
taints cuando haya una operación que deba completarse antes de que se puedan ejecutar Pods en el nodo. Por ejemplo, los pods no deben ejecutarse hasta que finalice la instalación de los controladores en el nodo.
La herramienta de ajuste automático de escala del clúster trata los nodos que tienen startup
taints como no preparados, pero los tiene en cuenta durante la lógica de ampliación, ya que se supone que estarán listos en breve.
Los taints de inicio se definen como todos los taints con el prefijo startup-taint.cluster-autoscaler.kubernetes.io/
.
Estados sucios
Usa status
taints cuando GKE no deba usar un nodo determinado para ejecutar pods.
La herramienta de adaptación dinámica de clústeres trata los nodos contaminados con status
como listos, pero los ignora durante la lógica de escalado vertical. Aunque el nodo contaminado esté listo, no se debe ejecutar ningún pod. Si los pods necesitan más recursos, GKE aumenta la escala del clúster e ignora los nodos contaminados.
Las contaminaciones de estado se definen como todas las contaminaciones con el prefijo status-taint.cluster-autoscaler.kubernetes.io/
.
Ignorar intolerancias
Los taints de ignorar se definen como todos los taints con el prefijo ignore-taint.cluster-autoscaler.kubernetes.io/
.
Solución de problemas
Para obtener consejos sobre cómo solucionar problemas, consulta las siguientes páginas:
- Soluciona problemas cuando la herramienta de escalado automático de clústeres no reduce la escala.
- Soluciona problemas cuando la herramienta de ajuste automático de escala de clústeres no aumenta la escala.
Siguientes pasos
- Más información sobre el autoescalador de clústeres
- Consulta los eventos de la herramienta de escalado automático de clústeres.