View a markdown version of this page

Reducción de la latencia de las aplicaciones con tiempos de arranque prolongados mediante grupos de calentamiento con grupos de nodos administrados. - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Reducción de la latencia de las aplicaciones con tiempos de arranque prolongados mediante grupos de calentamiento con grupos de nodos administrados.

Cuando las aplicaciones tienen tiempos de inicialización o arranque prolongados, los eventos de escalado horizontal pueden provocar demoras: los nodos nuevos deben haber arrancado completamente y unirse al clúster antes de poder programar los pods en ellos. Esta latencia puede afectar a la disponibilidad de las aplicaciones durante picos de tráfico o eventos de escalado rápido. Los grupos de calentamiento resuelven este problema al mantener un grupo de instancias de EC2 inicializadas previamente que ya han completado el proceso de arranque. Durante un evento de escalado horizontal, las instancias se trasladan del grupo de calentamiento directamente al clúster, lo que evita laboriosos pasos de inicialización y reduce considerablemente el tiempo que tarda en estar disponible la nueva capacidad. Para obtener más información, consulte Disminución de la latencia de las aplicaciones que tienen tiempos de arranque prolongados mediante grupos de calentamiento en la Guía del usuario de Amazon EC2 Auto Scaling.

Los grupos de nodos administrados por Amazon EKS son compatibles con los grupos de calentamiento de Amazon EC2 Auto Scaling. Un grupo de calentamiento mantiene las instancias de EC2 preinicializadas junto con su grupo de escalado automático, que pueden unirse rápidamente a su clúster durante los eventos de escalado horizontal. Las instancias del grupo de calentamiento ya han completado el proceso de inicialización del arranque y se pueden mantener en un estado Stopped, Running o Hibernated.

Amazon EKS administra los grupos de calentamiento a lo largo del ciclo de vida del grupo de nodos mediante el rol vinculado al servicio AWSServiceRoleForAmazonEKSNodegroup para crear, actualizar y eliminar los recursos de los grupos de calentamiento.

Funcionamiento

Al configurar un grupo de calentamiento, Amazon EKS crea un grupo de calentamiento de Auto Scaling de EC2 conectado al grupo de escalado automático de su grupo de nodos. Las instancias se lanzan al grupo de calentamiento, completan el proceso de inicialización del arranque y permanecen en el estado configurado (Running, Stopped o Hibernated) hasta que se necesiten. Durante los eventos de escalado horizontal, las instancias pasan del grupo de calentamiento al grupo de escalado automático, completan el proceso de inicialización de Amazon EKS para unirse al clúster y están disponibles para la programación de los pods. Con la reutilización de instancias activada, las instancias pueden volver al grupo de calentamiento durante los eventos de reducción horizontal.

importante

Configure siempre los grupos de calentamiento a través de la API de Amazon EKS mediante create-nodegroup o update-nodegroup-config. No modifique manualmente la configuración de los grupos de calentamiento mediante la API de EC2 Auto Scaling, ya que esto puede provocar conflictos con la administración de los recursos de Amazon EKS.

Consideraciones

importante

Antes de configurar grupos de calentamiento, consulte los requisitos y las limitaciones en Grupos de calentamiento para Amazon EC2 Auto Scaling en la Guía del usuario de Amazon EC2 Auto Scaling. No se admiten todos los tipos de instancias, AMI o configuraciones.

  • Permisos de IAM: el rol vinculado al servicio AWSServiceRoleForAmazonEKSNodegroup (que se crea automáticamente con el primer grupo de nodos administrado) incluye los permisos de administración de grupos de calentamiento necesarios.

  • Limitaciones de AMI: los grupos de calentamiento no son compatibles con las AMI personalizadas. Debe usar AMI optimizadas para Amazon EKS.

  • Limitaciones de Bottlerocket: si utiliza las AMI de Bottlerocket, no se admite el estado del grupo Hibernated. Utilice únicamente los estados de grupo Stopped o Running. Además, la característica reuseOnScaleIn no es compatible con las AMI de Bottlerocket.

  • Compatibilidad con hibernación: el estado de grupo Hibernated solo se admite en tipos de instancias específicos. Consulte Requisitos previos de hibernación en la Guía del usuario de Amazon EC2 para conocer los tipos de instancias compatibles.

  • Impacto de costos: crear un grupo de calentamiento cuando no es necesario puede generar costos innecesarios.

  • Planificación de la capacidad: dimensione su grupo de calentamiento en función de los patrones de escalado para equilibrar el costo y la disponibilidad. Comience con entre un 10 y un 20 % de la capacidad máxima prevista.

  • Redes de VPC: asegúrese de que haya suficientes direcciones IP para el grupo de escalado automático y las instancias de grupo de calentamiento.

Configuración de grupos de calentamiento

Puede configurar los grupos de calentamiento al crear un nuevo grupo de nodos administrados o actualizar un grupo de nodos administrado existente para agregar compatibilidad con los grupos de calentamiento.

Parámetros de configuración

  • activado: (booleano) indica su intención de adjuntar un grupo de calentamiento al grupo de nodos administrado. Necesario para activar el soporte con grupos de calentamiento.

  • MaxGroupPreparedCapacity: (entero) número total máximo de instancias entre el grupo de calentamiento y el grupo de escalado automático combinados.

  • minSize: (entero) número mínimo de instancias que se mantendrán en el grupo de calentamiento. Valor predeterminado: 0.

  • poolState: (cadena) estado de las instancias de grupos de calentamiento. Valor predeterminado: Stopped.

  • reuseOnScaleIn: (booleano) indica si las instancias vuelven al grupo de calentamiento durante los eventos de reducción horizontal en lugar de finalizarlos. Valor predeterminado: false. No es compatible con las AMI de Bottlerocket.

Uso de la CLI de AWS

Puede configurar un grupo de calentamiento al crear un grupo de nodos administrado o agregar uno a un grupo de nodos existente.

Creación de un grupo de nodos con un grupo de calentamiento

aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --node-role arn:aws:iam::111122223333:role/AmazonEKSNodeRole \ --subnets subnet-12345678 subnet-87654321 \ --region us-east-1 \ --scaling-config minSize=2,maxSize=10,desiredSize=3 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true

Adición de un grupo de calentamiento a un grupo de nodos existente

aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true

Actualización de la configuración

Actualice la configuración del grupo de calentamiento en cualquier momento mediante update-nodegroup-config. Las instancias de grupo de calentamiento existentes no se ven afectadas de forma inmediata; las nuevas configuraciones se aplican a las instancias que ingresan al grupo de calentamiento después de la actualización.

aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=10,minSize=3,poolState=Running,reuseOnScaleIn=true

Para desactivar el grupo de calentamiento asociado a su grupo de nodos, utilice la configuración enabled=false:

aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=false

Recursos adicionales