Blog de Amazon Web Services (AWS)

Prácticas recomendadas de uso de instancias Spot en Amazon EKS

Por Lucas Duarte, Arquitecto Especialista Containers AWS y
Vinicius Silva, Arquitecto en Soluciones AWS

 

Las instancias Spot de Amazon EC2 le permiten aprovechar la capacidad EC2 no utilizada en la nube de AWS. En comparación con los precios bajo demanda, las instancias Spot ofrecen descuentos de hasta el 90%. Se pueden utilizar para una variedad de aplicaciones sin estado, tolerantes a errores y flexibles, como big data, cargas de trabajo de contenedores, CI/CD, servidores web, informática de alto rendimiento (HPC) y cargas de trabajo de prueba y desarrollo. Dado que las instancias Spot están integradas con otros servicios de AWS, como Auto Scaling, EMR, ECS, CloudFormation, Data Pipeline y AWS Batch, puede elegir cómo iniciar y mantener sus aplicaciones ejecutándose en instancias Spot.

En este blog, cubriremos formas y prácticas recomendadas de utilizar instancias Spot con Amazon EKS, y cómo al utilizar este tipo de estrategia puede reducir significativamente el costo con descuentos de hasta un 90% en comparación con las instancias bajo demanda.

 

Prácticas recomendadas para su uso en Amazon EKS

Para un mejor uso de Amazon EKS con instancias Spot, se requieren algunas configuraciones para evitar el tiempo de inactividad de las aplicaciones que se ejecutan en el clúster.

Para definir qué tipos de instancias y familias utilizar, el primer paso necesario es hacer referencia al asesor de instancias Spot.  Spot Instance Advisor ayuda a determinar los grupos con menos posibilidades de interrupción y ofrece ahorros en tarifas bajo demanda.  Debe tener en cuenta la tolerancia a la interrupción de las aplicaciones y los objetivos de reducción de costos al seleccionar una instancia de subasta. Cuanto menor sea la tasa de interrupciones, mayor será el tiempo de lanzamiento de instancias Spot.

A continuación hablaremos de algunas recomendaciones relevantes que deben tenerse en cuenta al implementar instancias Spot en un clúster de Amazon EKS siguiendo las prácticas recomendadas:

  • Realice una combinación de capacidad, familia de instancias y zonas de disponibilidad disponibles en grupos de nodos de Amazon EKS a través de lo que llamamos grupos de capacidad Spot, de modo que si AWS interrumpe alguna instancia, tendremos más opciones de instancias. para seleccionar y aprovisionar en lugar de la que se interrumpió.
    • Puede utilizar el selector de instancias EC2 para comprobar qué instancias tienen la capacidad que espera y montar su grupo de capacidad de Spot. Ejemplo a continuación:
ec2-instance-selector --vcpus=4 --memory=16 --cpu-architecture=x86_64 —gpus=0 —burst-support=false
  • Deberíamos en el clúster de Amazon EKS como una unidad de CPU y RAM, así que tenemos que estimar el número total de vCPUs que tenemos en nuestro clúster y no en cada instancia individual. Con esta estrategia podemos planificar y crear nuestro grupo de capacidad Spot.

Grupos de capacidad Spot = (Zonas de disponibilidad) * (Tipos de instancias)

  • Con AWS Node Termination Handler, este proyecto garantiza que el plano de control de Amazon EKS responda adecuadamente a los eventos causados por la interrupción de las instancias EC2, detecta mediante metadatos de instancias de clúster y busca la señal de finalizar las instancias de nodo de trabajador proporcionadas 2 minutos antes por AWS. Luego se ejecuta Cordon, lo que garantiza que el Kube Scheduler no asignará nuevos pods al nodo y Drain para eliminar los pods del nodo que finalizará.
  • Mediante el escalador automático de clúster, esta aplicación detecta cuando los pods están en estado Pendiente, es decir, deben liberarse y, según la capacidad máxima de su grupo de auto escalamiento (ASG), actualiza el valor deseado a un valor que pueda satisfacer las necesidades de los pods. Además, es importante implementar esta aplicación en una instancia bajo demanda mediante NodeSelector que no puede ser terminada por AWS.
  • Hay escenarios en los que los clientes desean que solo las instancias Spot se escalen para reducir los costos, Para esto, podemos crear dos grupos de nodos, uno con instancias Spot y otro con instancias bajo demanda. En el grupo de nodos bajo demanda, podemos establecer valores de instancia mínimos, máximos y deseados para evitar que el escalador automático de clúster inicie nuevas instancias en ese grupo y aprovisione nuevas instancias en el grupo de nodos de Spot. También puede cambiar la operación de escalado cambiando la configuración del expansor en el manifiesto del escalador automático de clúster.
  • Utilice grupos de nodos administrados de AWS. Actualmente, los grupos de nodos administrados ya admiten el uso de instancias Spot. Para mayor información consulte el siguiente blog.
  • Para cargas de trabajo que deben desplegarse en instancias específicas o que no son resilientes hasta el punto de recuperarse de fallos (por ejemplo, cargas de trabajo con estado), podemos utilizar en nuestro manifiesto de aplicación un NodeSelector basado en la característica de la instancia, ya sea Spot o bajo demanda.

 

Solución desarrollada por socios de AWS

Spot.io es un socio tecnológico avanzado de la red de socios de AWS (APN) con competencias de AWS en contenedores y herramientas de administración de nube. Spot.io ayuda a los clientes a ahorrar en sus costes informáticos de AWS aprovechando las instancias Spot de Amazon EC2 con facilidad y confianza.

Spot Ocean, un servicio ofrecido por un partner para escalabilidad de aplicaciones. Similar a los grupos de auto escalamiento de Amazon EC2, Spot Ocean tiene por objeto optimizar el rendimiento y los costos aprovechando las instancias Spot combinadas con instancias reservadas y bajo demanda. Simplifica la administración, el escalado y el funcionamiento de los clústeres de Kubernetes y reduce los costes hasta en un 80% al aprovisionar instancias Spot para ejecutar la carga de trabajo.

Spot Ocean administra automáticamente que sus contenedores se desplieguen en la mejor combinación posible de instancias Spot, reservadas y bajo demanda. Esto le ayuda a optimizar el costo, la disponibilidad y el rendimiento de los clústeres de Amazon EKS.

Puede hacer despliegues sin la sobrecarga de administración de eventos de escalado, elegir los tamaños de instancia correctos y, por lo tanto, utilizar sus instancias reservadas, bajo demanda y Spot de una manera óptima que reduce el gasto hasta en un 80%.

 

Conclusión

En este blog, discutimos el uso de instancias Spot junto con Amazon EKS y, como hemos mencionado, la adopción de instancias Spot puede reducir significativamente el costo de los grupos de nodos de nuestro clúster al ahorrar hasta un 90% en comparación con las instancias bajo demanda. Para que podamos crear entornos resistentes a errores utilizando instancias Spot, es importante tener en cuenta algunas configuraciones y tener la previsibilidad de los escenarios que pueden ocurrir si se termina la instancia.

Siguiendo las prácticas recomendadas mencionadas anteriormente, puede aprovechar al máximo la experiencia de un entorno mixto entre instancias Spot e instancias bajo demanda para equilibrar el costo, la disponibilidad y la escalabilidad.

Además, podemos considerar una solución de partners como Spot Ocean para reducir la sobrecarga de la administración de instancias Spot, reservadas y bajo demanda del clúster de Amazon EKS, de modo que pueda centrarse en el desarrollo de aplicaciones y también tener una interesante optimización de costes para la empresa.

 

Referencias

https://aws.amazon.com/blogs/compute/cost-optimization-and-resilience-eks-with-spot-instances/

https://aws.amazon.com/blogs/containers/amazon-eks-now-supports-provisioning-and-managing-ec2-spot-instances-in-managed-node-groups/

https://aws.amazon.com/es/quickstart/not-available/

https://aws.amazon.com/es/blogs/apn/running-applications-on-amazon-eks-using-amazon-ec2-spot-instances-with-spotinst-ocean/

 

Este artículo fue traducido del Blog de AWS en Portugués

 


Sobre los autores

Lucas Duarte es arquitecto experto en contenedores de AWS que se centra en los clientes de LATAM. Entusiasta de la automatización, la nube y la cultura DevOps. Con experiencia previa en proyectos centrados en este segmento en empresas como iFood, Guiabolso y Mandic. Ha trabajado en diferentes proyectos relacionados principalmente con la orquestación de contenedores y microservicios.

 

 

 

Vinicius Silva es arquitecto de soluciones en AWS y apoya a los clientes del sector de la energía y los servicios públicos para lograr sus objetivos con la nube de AWS. Interesado en el desarrollo y la cultura de DevOps, ha contribuido previamente al desarrollo de plataformas web distribuidas y escalables

 

 

 

 

Revisor

Cristian Castellanos es arquitecto de soluciones en Amazon Web Services para el sector público. Cristian ha ayudado a múltiples instituciones educativas, gobierno, organizaciones de la salud y sin ánimo de lucro en la adopción de nuevas tecnologías e implementación de soluciones de analítica.