Acerca de la herramienta de adaptación dinámica de clústeres
En este documento se describe la herramienta de ajuste automático de escala de clústeres, que controla automáticamente el tamaño de los grupos de nodos. El autoescalador de clúster se habilita cuando se especifican los valores mínimo y máximo del número de nodos de 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 de Kubernetes de código abierto.
Autoescalar un grupo de nodos
La herramienta de autoescalado de clústeres cambia automáticamente el tamaño del número de nodos de un grupo de nodos determinado en función de las demandas de tus cargas de trabajo. No tienes que añadir ni quitar nodos manualmente, ni aprovisionar en exceso tus grupos de nodos. En su lugar, especifica un tamaño mínimo y máximo para el grupo de nodos, y el resto se hace automáticamente.
Si es necesario eliminar o mover recursos mientras se autoescala el clúster, es posible que tus cargas de trabajo sufran interrupciones transitorias. Por ejemplo, si tu carga de trabajo consta de un controlador con una sola réplica, el pod de esa réplica se puede volver a programar en otro nodo si se elimina el nodo actual. Por este motivo, debes diseñar tus cargas de trabajo para que toleren posibles interrupciones o para asegurarte de que los pods críticos no se interrumpan.
Cómo funciona la herramienta de adaptación dinámica de clústeres
La herramienta de adaptación dinámica de clústeres funciona por grupo de nodos. Cuando usas el escalador automático de clústeres para configurar un grupo de nodos, especificas un tamaño mínimo y máximo para el grupo de nodos. Puedes cambiar el tamaño mínimo y máximo cuando creas un grupo de nodos o actualizas un grupo de nodos.
La herramienta de escalado automático de clústeres aumenta o reduce el tamaño del grupo de nodos automáticamente en función de las solicitudes de recursos (en lugar de la utilización real de los recursos) de ese grupo de nodos. El autoescalador de clústeres añade nodos si los objetos Pod no se pueden programar y no hay suficiente capacidad en el grupo de nodos para satisfacer las solicitudes.
La herramienta de escalado automático de clústeres también elimina nodos si no se utilizan lo suficiente y todos los objetos Pod se pueden programar en un número menor de nodos. Si el nodo no se puede drenar correctamente al cabo de 10 minutos, se finalizará de forma forzosa. Este periodo no se puede configurar.
Si un pod solicita muy pocos recursos (por ejemplo, si los valores predeterminados no son suficientes), el autoescalador de clústeres no corregirá la situación. Para asegurarte de que el autoescalador de clústeres funciona con la mayor precisión posible, puedes crear solicitudes de recursos adecuadas para todas tus cargas de trabajo. Para obtener más información, consulta Gestionar recursos de contenedores.
Anotaciones de pods y comportamiento de la herramienta de adaptación dinámica de clústeres
La herramienta de adaptación dinámica de clústeres tiene en cuenta determinadas anotaciones de pods a la hora de tomar decisiones sobre el escalado. Por ejemplo, el autoescalador de clústeres admite anotaciones de pods, como "cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
. Esta anotación, cuando se le asigna el valor "false", evita que se elimine el nodo que aloja el pod durante un evento de reducción. Si conoces y usas estas anotaciones, podrás ajustar el comportamiento del escalador automático para que se adapte a los requisitos de tu carga de trabajo.
Para obtener más información sobre las anotaciones de los pods y sus efectos en el escalado automático de clústeres, consulta los siguientes recursos:
- ¿Qué tipos de pods pueden impedir que la CA elimine un nodo? en las preguntas frecuentes sobre el escalado automático de clústeres.
- Documentación oficial de Cluster Autoscaler de Kubernetes
Criterios operativos
La herramienta de adaptación dinámica de clústeres hace las siguientes suposiciones al cambiar el tamaño de un grupo de nodos:
- Todos los objetos Pod replicados se pueden reiniciar en otro nodo, lo que puede provocar una breve interrupción. Si tu carga de trabajo no tolera las interrupciones, configúrala para que se ejecute en un grupo de nodos con el escalado automático inhabilitado. Para obtener más información, consulta Controlar la programación con taints de nodos.
- La herramienta de adaptación dinámica de clústeres puede anular cualquier operación de gestión de nodos manual que realices.
- Todos los nodos de un mismo grupo de nodos tienen el mismo conjunto de etiquetas.
- El autoescalador de clústeres selecciona un grupo de nodos que tenga la menor cantidad de CPU inactiva o de memoria sin usar después de aumentar la escala. Este comportamiento afecta a los grupos de nodos que se escalan verticalmente si tienes nodos de diferentes tamaños (por ejemplo, nodos con un uso elevado de la CPU o de la memoria) en el mismo clúster.
Tamaño mínimo y máximo de los grupos de nodos
Puedes especificar el tamaño mínimo y máximo de cada grupo de nodos de tu clúster con las marcas min-nodes
y max-nodes
. Para inhabilitar el escalado automático, asigna el mismo número a min-nodes
y max-nodes
. La herramienta de adaptación dinámica del clúster toma decisiones de escalado dentro de estos límites de tamaño.
Cuando definas el tamaño máximo de tus grupos de nodos, asegúrate de que sea lo suficientemente grande para ejecutar todas tus cargas de trabajo. Si los grupos de nodos de tu clúster no tienen suficiente memoria y CPU disponibles para ejecutar todas tus cargas de trabajo, pueden producirse interrupciones.
Usar un PodDisruptionBudget
para proteger las cargas de trabajo
Puedes configurar GKE en Azure para protegerte frente a las interrupciones de las cargas de trabajo con un PodDisruptionBudget
. Cuando creas un PodDisruptionBudget
, especificas el número mínimo de réplicas de pods que deben estar disponibles o el número máximo de réplicas de pods que pueden no estar disponibles en un momento dado. Para obtener más información, consulta Especificar un presupuesto de interrupción para tu aplicación.
Más información
Para obtener más información sobre el autoescalador de clústeres y cómo evitar interrupciones, consulta los siguientes recursos:
- Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes
- ¿Cómo funciona la reducción de escala?
- ¿La herramienta de adaptación dinámica de clústeres funciona con
PodDisruptionBudget
en la reducción de escala?