Escalador automático del clúster

En esta página se explican las características del escalador automático de Google Kubernetes Engine. Para obtener información sobre cómo realizar el ajuste de escala automático de los clústeres, consulta Ajuste de escala automático de un clúster.

Descripción general

El escalador automático de clúster de GKE cambia automáticamente el tamaño de los clústeres según las exigencias de las cargas de trabajo que desees ejecutar. Con el ajuste de escala automático habilitado, GKE agrega automáticamente un nodo nuevo a tu clúster, si creaste pods que no tienen la capacidad suficiente para ejecutarse; o, por el contrario, si un nodo de tu clúster no se utiliza lo suficiente y sus otros pods pueden ejecutarse en otros nodos, GKE puede borrar el nodo.

El ajuste de escala automático del clúster te permite pagar solo por los recursos que se necesitan en un momento determinado y obtener recursos adicionales automáticamente cuando las exigencias aumenten.

Ten en cuenta que cuando los recursos se borran o transfieren durante el ajuste de escala automático del clúster, es posible que los servicios sufran interrupciones. Por ejemplo, si tu servicio consta de un controlador con una sola réplica, es posible que el pod de esa réplica se reinicie en otro nodo si se borra el actual. Antes de habilitar el ajuste de escala automático, asegúrate de que tus servicios toleren una posible interrupción.

Cómo funciona el escalador automático del clúster

El escalador automático del clúster funciona por grupo de nodos. En cada grupo de nodos, el escalador automático permite verificar periódicamente si hay pods sin programar que están a la espera de un nodo con recursos disponibles. Si existe un pod con esas características, el escalador automático aumentará el tamaño del grupo de nodos, siempre que esta acción permita la programación de los pods en espera.

El escalador automático de clúster también mide el uso de cada nodo en comparación con la exigencia de capacidad total del grupo de nodos. Si un nodo no tiene pods nuevos programados durante un período y todos los pods que están en ejecución se pueden programar en otros nodos del grupo, el escalador automático los transfiere y borra el nodo. Si el nodo no se puede drenar correctamente después de 10 minutos, se forzará su finalización. Los clústeres de GKE no permiten configurar el período de gracia.

El escalador automático funciona según las solicitudes de recursos del pod, es decir, en función de cuántos recursos solicitaron tus pods. El escalador automático del clúster no considera los recursos que tus pods usan de manera activa. Básicamente, el escalador automático del clúster confía en que las solicitudes de recursos del pod que proporcionaste son precisas y las usa para programar los pods en los nodos.

Si los recursos que solicitaron tus pods son demasiado pocos (o si no han cambiado los valores predeterminados, que podrían ser insuficientes) y tus nodos sufren escasez, el escalador automático no corrige la situación. Para ayudar a que el escalador automático del clúster funcione de la manera más precisa posible, debes realizar solicitudes de recursos explícitas para todas tus cargas de trabajo.

Criterios operativos

El escalador automático del clúster supone lo siguiente cuando cambia el tamaño de un grupo de nodos:

  • Todos los pods replicados se pueden reiniciar en otro nodo, aunque es posible que esto provoque una interrupción breve. Si tus servicios no son tolerantes a las interrupciones, no se recomienda usar el ajuste de escala automático.
  • Los usuarios o administradores no administran nodos de forma manual; es posible que se anulen todas las operaciones manuales que realizas.
  • Todos los nodos de un grupo tienen el mismo conjunto de etiquetas.
  • El escalador automático del clúster considera el costo relativo de los tipos de instancia en varios grupos y, luego, intenta expandir el que genere el costo más bajo. Para esto se considera el costo reducido de los grupos de nodos que contienen VM interrumpibles.
  • No se realiza seguimiento de las etiquetas que se agregan manualmente después de la creación del clúster o grupo de nodos inicial. Los nodos que se creen con el escalador automático del clúster reciben etiquetas que se especifican con --node-labels cuando se crea el grupo de nodos.

Balance entre zonas

Si tu clúster tiene varios grupos de nodos con el mismo tipo de instancia, el escalador automático intenta mantener balanceado el tamaño de estos cuando realiza el escalamiento. Esto puede ayudarte a prevenir una distribución desigual de los tamaños de los grupos de nodos cuando los tienes en varias zonas.

Si tienes un grupo de nodos que deseas excluir del balanceo del tamaño del grupo, puedes hacerlo con una etiqueta personalizada.

Para obtener más información sobre cómo el escalador automático toma decisiones de balanceo, consulta las Preguntas frecuentes sobre ajuste de escala automático en la documentación de Kubernetes.

Tamaño mínimo y máximo del grupo de nodos

Puedes especificar el tamaño mínimo y máximo para cada grupo de nodos del clúster, y el escalador automático tomará las decisiones de reescalamiento en función de estos límites. Si el tamaño actual del grupo de nodos es inferior al límite mínimo o superior al límite máximo, cuando habilitas el ajuste de escala automático, el escalador automático espera hasta que se necesite un nodo nuevo en el grupo o hasta que un nodo pueda borrarse de forma segura del grupo.

Límites del ajuste de escala automático

Cuando realizas el ajuste de escala automático en los clústeres, los límites de escalamiento del grupo de nodos se determinan según la disponibilidad de la zona.

Por ejemplo, el siguiente comando crea un clúster de varias zonas con ajuste de escala automático, que tiene seis nodos en tres zonas, con un mínimo de un nodo por zona y un máximo de cuatro:

gcloud container clusters create example-cluster \
--zone us-central1-a \
--node-locations us-central1-a,us-central1-b,us-central1-f \
--num-nodes 2 --enable-autoscaling --min-nodes 1 --max-nodes 4

El tamaño total de este clúster es de entre tres y doce nodos repartidos en tres zonas. Si una de las zonas falla, el tamaño total del clúster pasa a ser de entre dos y ocho nodos.

Considerar la programación y la interrupción del pod

Cuando reduces el ajuste de escala automático, el escalador automático del clúster respeta las reglas de programación y expulsión establecidas en los pods. Estas restricciones pueden prevenir que el escalador automático borre un nodo. La eliminación de un nodo puede prevenirse si este contiene un pod con alguna de las siguientes condiciones:

  • Las reglas de afinidad o antiafinidad del pod previenen las reprogramaciones.
  • El pod tiene almacenamiento local.
  • El pod no se encuentra bajo la administración de un controlador, como Deployment, StatefulSet, Job o ReplicaSet.

PodDisruptionBudget de una aplicación también puede prevenir el ajuste de escala automático; si borrar nodos provoca que se supere el presupuesto, el clúster no reducirá su ajuste de escala.

Información adicional

Puede obtener más información sobre el escalador automático del clúster en las Preguntas frecuentes sobre el ajuste de escala automático en el proyecto Kubernetes de código abierto.

Limitaciones

El escalador automático del clúster presenta las siguientes limitaciones:

  • El escalador automático del clúster admite hasta 1000 nodos con 30 pods cada uno. Para obtener más detalles sobre las garantías de escalabilidad, consulta Informe de escalabilidad.
  • Cuando se reduce el escalamiento, el escalador automático del clúster da un período de gracia de 10 minutos. Después de este tiempo, el pod se elimina, incluso si este tiene configurado un período de gracia de más de 10 minutos.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...