Entornos de computación de Amazon EKS - AWS Batch

Entornos de computación de Amazon EKS

Introducción a AWS Batch en Amazon EKSEKS proporciona una breve guía para crear entornos de cómputo de EKS. En esta sección se proporcionan más detalles sobre los entornos de computación de Amazon EKS.

AWS Batch workflow diagram showing integration with Amazon EKS, ECS, Fargate, and EC2.

AWS Batch simplifica las cargas de trabajo por lotes en los clústeres de Amazon EKS al proporcionar funciones de gestión por lotes. Esto incluye la creación de colas, el seguimiento de dependencias, la gestión de reintentos y las prioridades de los trabajos, la gestión de pods y el escalado de nodos. AWS Batch puede gestionar varias zonas de disponibilidad y varios tipos y tamaños de instancias de Amazon EC2. AWS Batch integra varias de las prácticas recomendadas de Amazon EC2 Spot para ejecutar sus cargas de trabajo de forma tolerante a errores, lo que permite reducir las interrupciones. Puede utilizar AWS Batch para ejecutar un puñado de trabajos de un día para otro o millones de trabajos de misión crítica con total confianza.

AWS Batch workflow on Amazon EKS, showing job queue, compute environment, and EC2 instances.

AWS Batch es un servicio gestionado que organiza las cargas de trabajo por lotes en sus clústeres de Kubernetes gestionados por Amazon Elastic Kubernetes Service (Amazon EKS). AWS Batch lleva a cabo esta orquestación de forma externa a sus clústeres mediante un modelo de “superposición”. Dado que AWS Batch es un servicio gestionado, no hay componentes de Kubernetes (por ejemplo, operadores o recursos personalizados) que instalar o gestionar en el clúster. AWS Batch solo necesita que el clúster esté configurado con controles de acceso basados en roles (RBAC) que permitan al AWS Batch comunicarse con el servidor de API de Kubernetes. AWS Batch llama a las API de Kubernetes para crear, monitorear y eliminar pods y nodos de Kubernetes.

AWS Batch tiene una lógica de escalado integrada para escalar los nodos de Kubernetes en función de la carga de la cola de trabajos con optimizaciones en términos de asignación de la capacidad de trabajo. Cuando la cola de trabajos esté vacía, AWS Batch reduce verticalmente los nodos hasta alcanzar la capacidad mínima que haya establecido, que de forma predeterminada es cero. AWS Batch gestiona todo el ciclo de vida de estos nodos y los decora con etiquetas y taints. De esta forma, no se colocan otras cargas de trabajo de Kubernetes en los nodos gestionados por AWS Batch. La excepción son DaemonSets, que pueden dirigirse a nodos AWS Batch para proporcionar monitoreo y otras funcionalidades necesarias para la correcta ejecución de las tareas. Además, AWS Batch no ejecuta trabajos, específicamente pods, en los nodos de su clúster que no administra. De esta forma, puede usar una lógica de escalado y servicios independientes para otras aplicaciones del clúster.

Para enviar trabajos a AWS Batch, debe interactuar directamente con la API de AWS Batch. AWS Batch convierte trabajos en podspecs y, a continuación, crea las solicitudes para colocar pods en nodos gestionados por AWS Batch en su clúster de Amazon EKS. Puede utilizar herramientas como, por ejemplo, kubectl para ver los nodos y los pods en ejecución. Cuando un pod haya completado su ejecución, AWS Batch elimina el pod que creó para mantener una carga menor en el sistema Kubernetes.

Puede empezar conectando un clúster de Amazon EKS válido con AWS Batch. A continuación, adjúntele una cola de trabajos AWS Batch y registre una definición de trabajo de Amazon EKS con atributos podspec equivalentes. Por último, envíe los trabajos mediante la operación de la API SubmitJob que hace referencia a la definición del trabajo. Para obtener más información, consulte Introducción a AWS Batch en Amazon EKSEKS.

Amazon EKS