¿Cuál es la diferencia entre Amazon ECS y Amazon EC2?

127

Recién estoy comenzando con AWS EC2. Entiendo que EC2 es como una computadora remota donde puedo hacer prácticamente todo lo que quiero. Luego me enteré de ECS. Sé que usa Docker, pero estoy confundido acerca de la relación entre estos dos.

¿ECS es solo una instalación de Docker en EC2? Si ya tengo un EC2 e inicio un ECS, ¿significa que tengo dos instancias?

paynestrike
fuente

Respuestas:

169

Tu pregunta

¿ECS es solo una instalación acoplable en EC2? Si ya tengo un EC2, entonces inicio un ECS, ¿significa que tengo dos instancias?

No. AWS ECSes solo una agrupación lógica (clúster) de EC2instancias, y todas las EC2instancias forman parte de un ECSacto como Dockerhost, es decir, ECS puede enviar un comando para lanzar un contenedor en ellas ( EC2). Si ya tiene un EC2 y luego inicia ECS, aún tendrá una sola instancia. Si agrega / registra (instalando AWS ECS Container Agent) el EC2 en ECS, se convertirá en parte del clúster, pero seguirá siendo una instancia única de EC2.

Un Amazon ECS sin ningún EC2 registrado (agregado al clúster) no sirve para nada.


TL; DR

Una visión general

  • EC2 - es simplemente una máquina remota (virtual).
  • ECSsignifica Elastic Container Service: según la definición básica de clúster de computadoras , ECSes básicamente una agrupación lógica de EC2máquinas / instancias . Técnicamente hablando ECSes una mera configuración para un uso y administración eficiente de los EC2 recursos de su instancia (s), es decir, almacenamiento, memoria, CPU, etc.

Para simplificarlo aún más, si ha lanzado un Amazon ECSsin EC2agregar instancias, no sirve para nada, es decir, no puede hacer nada al respecto. ECStiene sentido solo una vez que EC2se le agregan una (o más) instancias.

La siguiente cosa confusa aquí es el término contenedor , que no es instancias de máquina completamente virtualizadas, y Docker es una tecnología que podemos usar para crear instancias de contenedor. Dockeres una utilidad que puede instalar en nuestra máquina, lo que la convierte en un Dockerhost, y en este host puede crear contenedores (igual que las máquinas virtuales, pero mucho más livianos). En resumen, se ECStrata solo de la agrupación en clústeres de instancias EC2 y se utiliza Dockerpara crear instancias de contenedores / instancias / máquinas virtuales en estos ( EC2) hosts .

Todo lo que necesita hacer es iniciar ECSy registrar / agregar tantas EC2instancias como necesite. Puede agregar / registrar instancias EC2, todo lo que necesita es Amazon ECS Container Agent ejecutándose en su instancia / máquina EC2, lo que se puede hacer de forma manual o directa utilizando la AMI especial (Imagen de máquina de Amazon), es decir, la AMI optimizada para Amazon ECS, que ya tiene el agente de contenedor de Amazon ECS. Durante el lanzamiento de una nueva instancia EC2, el agente la registra automáticamente en el clúster ECS predeterminado.

El agente contenedor que se ejecuta en cada una de las instancias ( EC2instancias) dentro de un Amazon ECSclúster envía información sobre las tareas en ejecución actuales de la instancia y la utilización de recursos a Amazon ECS, e inicia y detiene las tareas cada vez que recibe una solicitud de Amazon ECS. Para obtener más información, consulte Agente de contenedor de Amazon ECS . Una vez configuradas, cada una de las instancias de contenedor creadas (de cualquier EC2máquina / nodo) será una instancia en Amazon ECSel enjambre de.


Para obtener más información, lea el paso 10 de esta documentación: Lanzamiento de una instancia de contenedor de Amazon ECS :

Elija una AMI para su instancia de contenedor. Puede elegir la AMI optimizada para Amazon ECS u otro sistema operativo, como CoreOS o Ubuntu. Si no elige la AMI optimizada para Amazon ECS, debe seguir los procedimientos de Instalación del agente de contenedor de Amazon ECS .

De forma predeterminada, su instancia de contenedor se inicia en su clúster predeterminado. Si desea iniciar su propio clúster en lugar del predeterminado, elija la lista Detalles avanzados y pegue la siguiente secuencia de comandos en el campo de datos de usuario, reemplazando your_cluster_name con el nombre de su clúster.

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

O, si tiene un archivo ecs.config en Amazon S3 y ha habilitado el acceso de solo lectura de Amazon S3 a su función de instancia de contenedor, elija la lista Detalles avanzados y pegue la siguiente secuencia de comandos en el campo Datos de usuario, reemplazando your_bucket_name con el nombre de su bucket para instalar la AWS CLI y escribir su archivo de configuración en el momento del lanzamiento. Nota Para obtener más información sobre esta configuración, consulte Almacenamiento de la configuración de la instancia de contenedor en Amazon S3.

#!/bin/bash
yum install -y aws-cli
aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config

Solo para aclararlo más, puede crear contenedores en su única EC2instancia sin ECS. Instale cualquier tecnología de contenedorización, es decir, Dockerejecute el comando de creación de contenedor, estableciendo su EC2como Dockerhost y tenga tantos Dockercontenedores como desee (o tanto como lo EC2permitan sus recursos).

Nabeel Ahmed
fuente
8
¿ECS no significa Elastic Container Service?
lfk
1
Cabe señalar que esta respuesta ahora está sustancialmente desactualizada con el lanzamiento de AWS Fargate a principios de 2018 (que ejecuta ECS): aws.amazon.com/fargate
bsplosion
77

En palabras simples, ECS es un administrador, mientras que las instancias EC2 son como empleados. Todos los empleados (EC2) bajo este gerente (ECS) pueden realizar tareas "Docker" y el gerente también entiende bastante bien "Docker". Por lo tanto, siempre que necesite recursos "docker", se presenta al Administrador. El gerente ya tiene el estado de cada empleado (EC2) decide cuál debe realizar la tarea.

Ahora, volviendo a su pregunta, un gerente sin un "empleado" no tiene sentido.

ingrese la descripción de la imagen aquí

subodhkarwa
fuente
Muy bonita explicación. ¡Que tú!
Matley
Bueno, puede tener instancias EC2 sin ECS, pero eso sería como una simple máquina virtual.
Lea Reimann
31

EC2 le permite lanzar instancias individuales que puede usar para prácticamente lo que quiera. ECS es un servicio de contenedor, lo que significa que lanzará instancias que estarán listas para lanzar aplicaciones de contenedor. La principal distinción entre los dos servicios es que con EC2 debe administrar cada instancia por separado en el método que elija (manualmente, utilizando una herramienta CM o de cualquier otra manera): implemente sus aplicaciones y mantenga la conexión entre los servidores usted mismo. ECS le permite lanzar un clúster de máquinas que servirán como el terreno de implementación de sus aplicaciones de contenedor, lo que le permitirá tratar todas las instancias del clúster como una gran instancia disponible para su carga de trabajo de contenedor.

Y para responder a su pregunta, puede iniciar un clúster de ECS sin instancias en él, pero luego no podrá ejecutar nada en él. Una vez que registre una instancia EC2 dentro de un clúster de ECS, los contenedores estarán listos para ejecutarse en él. Entonces, la conclusión es que puede usar tanto ECS como EC2 con una sola instancia, pero ese no es el caso de uso real para el que se crearon estos servicios.

Yaron Idan
fuente
3

En pocas palabras, Elastic Container Service (ECS) es un servicio de orquestación de contenedores de Docker.

Puede pedirle que ejecute una o más imágenes de Docker, ya sea como un " Servicio " capaz de escalar automáticamente o como una " Tarea " ad-hoc .

Los servicios y tareas se ejecutan en un " Clúster ". Originalmente, un clúster era un grupo de uno o más servidores EC2 preconfigurados que ejecutaban el Agente de clúster de ECS. El Cluster Agent programaría los contenedores en el servidor EC2. Estos servidores EC2 aparecen en su lista de instancias EC2 y se cobran a los costos regulares de EC2 por minuto. Incluso puede SSH en ellos como cualquier servidor EC2 normal. Si desea más capacidad para ejecutar más servicios o tareas, o si desea resistencia contra fallas de EC2, entonces necesitaría más servidores EC2.

Alrededor de noviembre de 2017, AWS agregó ECS Fargate . Ahora, un clúster puede ejecutarse "sin servidor" sin aprovisionar nodos EC2. Simplemente defina la cantidad de CPU y memoria que su tarea o servicio requiere para funcionar, lo que significa que solo paga por la CPU y el tiempo de memoria en lugar del EC2.

Alastair McCormack
fuente
2

Bien, como sabe, EC2 es una máquina virtual en AWS y ECS es un sistema de orquestación de contenedores en AWS.

Para usar ECS, debe ejecutar su contenedor en algunas máquinas virtuales, EC2 es una de las opciones para proporcionarlo.

Deberá instalarlo ecs-agenten EC2 para establecer una conexión con ECS. Y ECS también puede monitorear el uso de recursos en su EC2. Básicamente, eliges el tipo de EC2 de más alto nivel, luego más recursos (CPU / MEM) que tu contenedor puede usar.

David Hsu
fuente
0

La principal diferencia son las instancias de Fargate que proporciona ECS.

hongdeshuai
fuente