|
Hoy me complace anunciar AWS Batch para Amazon Elastic Kubernetes Service (Amazon EKS). AWS Batch para Amazon EKS es ideal para los clientes que ya no desean cargar con la carga de configurar, ajustar y administrar los clústeres y pods de Kubernetes para usarlos con sus flujos de trabajo de procesamiento por lotes. Además, no hay ningún cargo por este servicio. Solo paga por los recursos que lanzan sus trabajos por lotes.
Cuando anteriormente consideré Kubernetes, parecía estar enfocado en la administración y el hospedaje de cargas de trabajo de microservicios. Por lo tanto, me sorprendió descubrir que algunos clientes también usan Kubernetes para ejecutar cargas de trabajo por lotes a gran escala y con uso intensivo de cómputo. Las diferencias entre las cargas de trabajo por lotes y de microservicio significan que el uso de Kubernetes para el procesamiento por lotes puede ser difícil y requiere que invierta mucho tiempo en la configuración y administración personalizadas para ajustar una solución adecuada.
Cargas de trabajo por lotes y microservicios en Kubernetes
Antes de profundizar en AWS Batch para Amazon EKS, consideremos algunas de las diferencias importantes entre las cargas de trabajo por lotes y de microservicio para ayudar a establecer un contexto sobre por qué puede ser difícil ejecutar cargas de trabajo por lotes en Kubernetes:
- Se supone que las cargas de trabajo de los microservicios comienzan y no se detienen; esperamos que estén disponibles continuamente. Por el contrario, las cargas de trabajo por lotes se ejecutan hasta completarse y luego se cierran, independientemente del éxito o el fracaso.
- Es posible que los resultados de una carga de trabajo por lotes no estén disponibles durante varios minutos y, a veces, horas o incluso días. Se espera que las cargas de trabajo de microservicios respondan a las solicitudes en milisegundos.
- Por lo general, implementamos cargas de trabajo de microservicios en varias zonas de disponibilidad para garantizar una alta disponibilidad. Este no es un requisito para las cargas de trabajo por lotes. Aunque podemos distribuir un trabajo por lotes para permitirle procesar diferentes datos de entrada en un análisis distribuido, normalmente queremos priorizar el acceso rápido y óptimo a los recursos que necesita el trabajo dentro de la zona de disponibilidad en la que se ejecuta.
- Las cargas de trabajo de microservicios y lotes se escalan de manera diferente. Para los microservicios, el escalado es generalmente predecible y generalmente lineal a medida que aumenta (o disminuye) la carga. Con las cargas de trabajo por lotes, primero puede realizar una ejecución de prueba de concepto inicial o repetida con poca frecuencia para analizar el rendimiento y descubrir el ajuste correcto necesario para una ejecución de producción completa. La diferencia de tamaño entre los dos puede ser exponencial. Además, con las cargas de trabajo por lotes, podemos escalar a un nivel extremo para una ejecución y luego volver a escalar a cero instancias durante largos períodos de tiempo, a veces meses.
Aunque los marcos de trabajo de terceros pueden ayudar con la ejecución de cargas de trabajo por lotes en Kubernetes, también puede implementar el suyo propio. Cualquiera que sea el enfoque que adopte, pueden quedar brechas y desafíos significativos en el manejo del trabajo pesado indiferenciado de la construcción, configuración y mantenimiento de soluciones por lotes personalizadas. Luego, también debe considerar la programación, ubicación y escalado de cargas de trabajo por lotes en Kubernetes de manera rentable. Entonces, ¿cómo ayuda AWS Batch en Amazon EKS?
Lote de AWS para Amazon EKS
AWS Batch para Amazon EKS ofrece un servicio totalmente administrado para ejecutar cargas de trabajo por lotes mediante clústeres alojados en Amazon Elastic Compute Cloud (Amazon EC2) sin necesidad de instalar y administrar soluciones por lotes complejas y personalizadas para abordar las diferencias destacadas anteriormente. AWS Batch proporciona un programador que controla y ejecuta trabajos por lotes de gran volumen, junto con un componente de orquestación que evalúa cuándo, dónde y cómo colocar los trabajos enviados a una cola. No es necesario que usted, como usuario, coordine nada de este trabajo; simplemente envíe una solicitud de trabajo a la cola.
La cola de trabajos, el seguimiento de dependencias, los reintentos, la priorización, el aprovisionamiento de recursos informáticos para Amazon Elastic Compute Cloud (EC2) y Amazon Elastic Compute Cloud (EC2) Spot y el envío de pods se gestionan mediante una cola sin servidor. Como servicio administrado, AWS Batch for Amazon EKS le permite reducir los gastos generales operativos y de administración y, en cambio, concentrarse en los requisitos de su negocio. Proporciona integración con otros servicios como AWS Identity and Access Management (IAM), Amazon EventBridge y AWS Step Functions y le permite aprovechar otros socios y herramientas en el ecosistema de Kubernetes.
Cuando se ejecutan trabajos por lotes en clústeres de Amazon EKS, AWS Batch es el principal punto de entrada para enviar solicitudes de carga de trabajo. En función de los trabajos en cola, AWS Batch lanza nodos trabajadores en su clúster para procesar los trabajos. Estos nodos se mantienen separados en un espacio de nombres distinto de sus otros grupos de nodos en Amazon EKS. Del mismo modo, los nodos de otros pods están aislados de los que se utilizan con AWS Batch.
Cómo funciona
AWS Batch utiliza clústeres de Amazon EKS administrados, que deben registrarse con AWS Batch y establecer permisos para que AWS Batch pueda iniciar y administrar entornos informáticos en esos clústeres para procesar trabajos enviados a la cola. Puede encontrar instrucciones sobre cómo lanzar un clúster administrado que AWS Batch puede usar en este tema en la Guía del usuario de Amazon EKS. Las instrucciones para configurar permisos se pueden encontrar en la Guía del usuario de AWS Batch.
Una vez que se han registrado uno o más clústeres y se han establecido los permisos, los usuarios pueden enviar trabajos a la cola. Cuando se envía un trabajo, se llevan a cabo las siguientes acciones para procesar la solicitud:
- Al recibir una solicitud de trabajo, la cola envía una solicitud de recursos al entorno informático configurado. Si aún no existe un grupo de escalado administrado por AWS Batch, se crea uno y AWS Batch comienza a lanzar instancias de Amazon Elastic Compute Cloud (EC2) en el grupo. Estas nuevas instancias se agregan al espacio de nombres de AWS Batch Kubernetes del clúster.
- El programador de Kubernetes coloca cualquier DaemonSet configurado en el nodo.
- Una vez que el nodo está listo, AWS Batch comienza a enviar solicitudes de ubicación de pods a su clúster, utilizando etiquetas y taints para elegir la ubicación de los pods, omitiendo gran parte de la lógica del programador k8s.
- Este proceso se repite, escalando según sea necesario en más instancias EC2 en el grupo de escalado hasta alcanzar la capacidad máxima configurada.
- Si la cola de trabajos tiene definido otro entorno informático, como uno configurado para usar instancias de Spot, lanzará nodos adicionales en ese entorno informático.
- Una vez que se completa todo el trabajo, AWS Batch elimina los nodos del clúster y finaliza las instancias.
Estos pasos se ilustran en la siguiente animación.
Comience a utilizar sus clústeres con AWS Batch hoy mismo
AWS Batch para Amazon Elastic Kubernetes Service (Amazon EKS) ya está disponible. Como señalé anteriormente, no hay ningún cargo por este servicio y solo paga por los recursos que consumen sus trabajos. Para obtener más información, visite el tema Introducción a Amazon EKS en la Guía del usuario de AWS Batch. También hay una taller autoguiado para ayudarlo a presentar AWS Batch en Amazon EKS.