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 asignar, cómo recopilar registros y definir variables de entorno.
Una Tarea se crea cuando ejecuta una Tarea directamente, que lanza contenedores (definidos en la definición de la tarea) hasta que se detienen o salen por sí mismos, momento en el cual no se reemplazan automáticamente . Ejecutar tareas directamente es ideal para trabajos de ejecución corta, tal vez como 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 Clústeres para que el Servicio tenga suficientes 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 normalmente 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 que al menos tres tareas se ejecutan en las tres zonas de disponibilidad (AZ) por el bien de la alta disponibilidad; si uno falla, tengo otros dos y el fallado será reemplazado (¡léalo como autocuración !). Crear un servicio es la forma de hacerlo. Si tuviera 6 instancias EC2 en mi clúster, 2 por AZ, el Servicio equilibrará automáticamente las Tareas en las zonas lo mejor que pueda y al mismo tiempo considerará los recursos de la CPU, la memoria y la red.
ACTUALIZAR:
No estoy seguro de que ayude a pensar en estas cosas jerárquicamente.
Otro punto muy importante es que un Servicio se puede configurar para usar un balanceador de carga, de modo que a medida que crea las Tareas, es decir, lanza contenedores definidos en la Definición de Tareas, el Servicio registrará automáticamente la instancia EC2 del contenedor con el balanceador de carga. Las tareas no se pueden configurar para usar un equilibrador de carga, solo los Servicios pueden.
Bellamente explicado en palabras por @talentedmrjones. La imagen de abajo te ayudará a visualizarla fácilmente :)
fuente
Definición de tarea:
Este es el plano que describe qué contenedores de Docker ejecutar y representa su aplicación. Incluye varias tareas.
Servicio:
Una instancia de Definición de tarea. También define las tareas mínimas y máximas de una definición de tarea ejecutada en un momento dado, ajuste de escala automático y equilibrio de carga.
Instancias de contenedor de ECS:
Esta es una instancia EC2 que tiene Docker y un ECS Container Agent ejecutándose. El Agente se encarga de la comunicación entre ECS y la instancia, proporcionando el estado de los contenedores en ejecución y gestionando los nuevos en ejecución.
Relación:
fuente