amazon-web-services - fargate - aws kubernetes
¿Cuál es la diferencia entre una tarea y un servicio en AWS ECS? (2)
Parece que uno puede ejecutar una tarea o un servicio basado en una definición de tarea. ¿Cuáles son las diferencias y similitudes entre Tarea y Servicio? ¿Hay alguna pista en el hecho de que uno puede especificar "Grupo de tareas" al crear Tarea pero no Servicio? ¿Las tareas y el servicio son instancias jerárquicamente iguales de la definición de tarea, o el servicio está compuesto de tareas?
Una definición de tarea es una colección de 1 o más configuraciones de contenedor . Algunas tareas pueden necesitar solo un contenedor, mientras que otras tareas pueden necesitar 2 o más contenedores potencialmente vinculados que se ejecutan simultáneamente. La definición de tarea le permite especificar qué imagen de Docker usar, qué puertos exponer, cuánta CPU y memoria se asignarán, cómo recopilar registros y definir variables de entorno.
Una tarea se crea cuando ejecuta una tarea directamente, que inicia los contenedores (definidos en la definición de tarea) hasta que se detienen o salen por sí mismos, en cuyo punto no se reemplazan automáticamente . Ejecutar tareas directamente es ideal para trabajos de ejecución corta, tal vez como un ejemplo de cosas que se lograron a través de CRON.
Un Servicio se utiliza para garantizar que siempre tenga una cierta cantidad de Tareas ejecutándose en todo momento . Si el contenedor de una Tarea se cierra debido a un error, o la instancia EC2 subyacente falla y se reemplaza, el Servicio ECS reemplazará la Tarea fallida. Es por eso que creamos Clusters para que el Servicio tenga muchos recursos en términos de CPU, Memoria y puertos de red para usar. Para nosotros, realmente no importa en qué instancia se ejecuten las Tareas mientras se ejecuten. Una configuración de servicio hace referencia a una definición de tarea. Un servicio es responsable de crear tareas .
Los servicios se utilizan generalmente para aplicaciones de larga ejecución como servidores web. Por ejemplo, si implementé mi sitio web impulsado por Node.JS en Oregon (us-west-2), me gustaría decir al menos tres tareas que se ejecutan en las tres zonas de disponibilidad (AZ) en aras de la alta disponibilidad; si uno falla, tengo otros dos y el fallido será reemplazado (¡léase eso como autocuración !). Crear un servicio es la forma de hacerlo. Si tuviera 6 instancias de EC2 en mi clúster, 2 por AZ, el Servicio equilibrará automáticamente las Tareas en las zonas lo mejor que pueda mientras considera los recursos de la CPU, la memoria y la red.
ACTUALIZAR:
No estoy seguro de que sea útil pensar en estas cosas jerárquicamente.
Otro punto muy importante es que un Servicio puede configurarse para usar un equilibrador de carga, de modo que a medida que crea las Tareas, es decir, lanza los contenedores definidos en la Definición de tarea, el Servicio registrará automáticamente la instancia EC2 del contenedor con el equilibrador de carga. Las tareas no se pueden configurar para usar un equilibrador de carga, solo los Servicios pueden.