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 on AWS 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 AWS 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.
Escalar verticalmente desde cero nodos
A partir de las siguientes versiones de GKE en AWS, el autoescalador de clústeres admite el escalado vertical de grupos de nodos desde cero nodos:
- Versión 1.29 y posteriores
- Versiones 1.28 a partir de 1.28.8-gke.800
- Versiones de 1.27 a partir de 1.27.12-gke.800
Si utilizas una versión anterior, debes actualizar tu clúster a una de estas versiones para usar esta función. Para habilitar esta función en clústeres, actualiza el clúster a una versión compatible y, a continuación, realiza una actualización gradual de tus grupos de nodos actualizando su versión de Kubernetes. Para obtener más información sobre cómo actualizar los grupos de nodos, consulta Actualizar un grupo de nodos.
La herramienta de ajuste automático de escala del clúster tiene en cuenta las etiquetas y los taints que definas en los grupos de nodos al tomar decisiones de escalado, incluso cuando no haya nodos disponibles como referencia. GKE en AWS asigna automáticamente las etiquetas y los taints necesarios al grupo de escalado automático de AWS subyacente del grupo de nodos. Para obtener más información sobre estas etiquetas, consulta la sección Configuración de detección automática de la página de GitHub que describe la configuración del escalador automático de clústeres para AWS.
Al definir estas etiquetas, GKE on AWS permite que el escalador automático del clúster cree plantillas de nodo precisas. Las plantillas de nodo son representaciones virtuales de nodos que incluyen la configuración, las etiquetas y los taints correctos, incluso cuando no hay nodos físicos en el grupo de nodos. Gracias a estas plantillas de nodo precisas, la herramienta de escalado automático de clústeres puede tomar decisiones de escalado vertical correctas.
Cuando configures tolerancias en tus grupos de nodos, ten en cuenta que los grupos de escalado automático de AWS tienen una limitación: si aplicas varias tolerancias con la misma clave, pero con combinaciones de valor y efecto diferentes, el escalador automático de clústeres solo tendrá en cuenta la última tolerancia aplicada con la clave duplicada.
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?