Acerca del escalador automático de clústeres
Este documento describe el escalador automático de clústeres, que controla automáticamente el tamaño de los grupos de nodos. El escalador automático de clústeres se habilita al especificar los valores mínimo y máximo para el número de nodos en un grupo de nodos. Estos valores se especifican al crear un grupo de nodos o al actualizar un grupo de nodos .
GKE en Azure usa el escalador automático de clústeres Kubernetes de código abierto.
Escalar automáticamente un grupo de nodos
El escalador automático de clústeres redimensiona automáticamente el número de nodos en un grupo de nodos determinado según las demandas de sus cargas de trabajo. No necesita agregar o eliminar nodos manualmente ni sobreaprovisionar sus grupos de nodos. En su lugar, especifica un tamaño mínimo y máximo para el grupo de nodos, y el resto es automático.
Si es necesario eliminar o mover recursos durante el escalado automático del clúster, las cargas de trabajo podrían experimentar interrupciones transitorias. Por ejemplo, si la carga de trabajo consta de un controlador con una sola réplica, el pod de esa réplica podría reprogramarse en un nodo diferente si se elimina el nodo actual. Por ello, debe diseñar sus cargas de trabajo para que toleren posibles interrupciones o para garantizar que los pods críticos no se interrumpan.
Cómo funciona el escalador automático de clúster
El escalador automático de clústeres funciona por grupo de nodos. Al configurar un grupo de nodos, se especifica un tamaño mínimo y máximo. Puede cambiar este tamaño al crear un grupo de nodos o al actualizarlo .
El escalador automático de clústeres aumenta o reduce automáticamente el tamaño del grupo de nodos, en función de las solicitudes de recursos (en lugar del uso real de recursos) en ese grupo. El escalador automático de clústeres añade nodos si los objetos de pod no se pueden programar y no hay suficiente capacidad en el grupo de nodos para atender las solicitudes.
El escalador automático de clústeres también elimina nodos si están infrautilizados y todos los objetos del pod podrían programarse en un número menor de nodos. Si el nodo no puede vaciarse correctamente después de 10 minutos, se cierra forzosamente. Este periodo no es configurable.
Si un pod solicita muy pocos recursos (por ejemplo, si los valores predeterminados son insuficientes), el escalador automático de clústeres no corrige la situación. Puede garantizar que el escalador automático de clústeres funcione con la mayor precisión posible creando solicitudes de recursos adecuadas para todas sus cargas de trabajo. Para obtener más información, consulte Administrar recursos para contenedores .
Anotaciones de pods y comportamiento del escalador automático de clústeres
El escalador automático de clústeres considera ciertas anotaciones de pods al tomar decisiones de escalado. Por ejemplo, admite anotaciones de pods como "cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
. Esta anotación, cuando se establece en "false", impide que el nodo que aloja el pod se elimine durante un evento de reducción de escala. Comprender y usar estas anotaciones puede ayudarle a ajustar el comportamiento del escalador automático para satisfacer los requisitos de su carga de trabajo.
Para obtener más información sobre las anotaciones de pod y sus efectos en el escalador automático del clúster, consulte los siguientes recursos:
- ¿Qué tipos de pods pueden impedir que CA elimine un nodo? en las preguntas frecuentes del escalador automático de clústeres.
- Documentación oficial del escalador automático de clústeres de Kubernetes
Criterios de funcionamiento
El escalador automático de clúster hace las siguientes suposiciones al cambiar el tamaño de un grupo de nodos:
- Todos los objetos de pod replicados pueden reiniciarse en otro nodo, lo que podría causar una breve interrupción. Si su carga de trabajo no tolera interrupciones, configúrela para que se ejecute en un grupo de nodos con el escalado automático deshabilitado. Para obtener más información, consulte Controlar la programación con valores taint de nodo .
- El escalador automático del clúster puede anular cualquier operación de administración de nodos manual que realice.
- Todos los nodos de un único grupo de nodos tienen el mismo conjunto de etiquetas.
- El escalador automático de clústeres selecciona un grupo de nodos con la menor cantidad de CPU inactiva o memoria sin usar tras el escalado vertical. Este comportamiento afecta a los grupos de nodos que se escalan verticalmente si hay nodos de diferentes tamaños (por ejemplo, nodos con alto consumo de CPU o memoria) en el mismo clúster.
Tamaño mínimo y máximo del grupo de nodos
Puede especificar el tamaño mínimo y máximo de cada grupo de nodos de su clúster con los indicadores min-nodes
y max-nodes
. Para deshabilitar el escalado automático, configure min-nodes
y max-nodes
con el mismo número. El escalador automático del clúster toma decisiones de escalado dentro de estos límites de tamaño.
Al establecer el tamaño máximo de sus grupos de nodos, asegúrese de que sea lo suficientemente grande como para ejecutar todas sus cargas de trabajo. Si los grupos de nodos de su clúster no tienen suficiente memoria y CPU disponibles para ejecutar todas sus cargas de trabajo, podrían producirse interrupciones.
Utilice un PodDisruptionBudget
para proteger las cargas de trabajo
Puede configurar GKE en Azure para protegerse contra interrupciones de la carga de trabajo con un PodDisruptionBudget
. Al crear un PodDisruptionBudget
, especifique el número mínimo de réplicas de pod que deben estar disponibles o el número máximo de réplicas de pod que pueden no estar disponibles en un momento dado. Para obtener más información, consulte "Especificar un presupuesto de interrupción para su aplicación" .
Más información
Para obtener más información sobre el escalador automático de clústeres y cómo evitar interrupciones, consulte los siguientes recursos:
- Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes
- ¿Cómo funciona la reducción de escala?
- ¿El escalador automático de clúster funciona con
PodDisruptionBudget
en reducción de escala?