Apenas estoy comenzando con AWS EC2. Entiendo que EC2 es como una computadora remota donde puedo hacer casi todo lo que quiero. Entonces me enteré de ECS. Sé que usa Docker, pero estoy confundido acerca de la relación entre estos dos.
¿Es ECS solo una instalación de Docker en EC2? Si ya tengo un EC2 y comienzo un ECS, ¿significa que tengo dos instancias?
En palabras simples, ECS es un administrador, mientras que las instancias de EC2 son como empleados. Todos los empleados (EC2) bajo este administrador (ECS) pueden realizar tareas de "Docker" y el administrador también entiende bastante bien "docker". Entonces, siempre que necesite recursos de "docker", se presenta al Gerente. El gerente ya tiene el estado de cada empleado (EC2) y decide cuál debe realizar la tarea.
Ahora, volviendo a su pregunta, un gerente sin un "empleado" no tiene sentido, pero definitivamente es posible.
EC2 le permite lanzar instancias individuales que puede usar prácticamente para 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 tiene que administrar cada instancia por separado en cualquier método que elija (manualmente, utilizando una herramienta CM o de cualquier otra forma): 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á como base de implementación de sus aplicaciones de contenedor, lo que le permite 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, pero luego no podrá ejecutar nada en él. Una vez que registra una instancia de EC2 dentro de un clúster de ECS, los contenedores está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.
Tu pregunta
¿Es ECS solo una instalación acoplable en EC2? Si ya tengo un EC2, entonces inicio un ECS, ¿significa que tengo dos instancias?
No. AWS ECS
es solo una agrupación lógica (clúster) de instancias EC2
, y todas las instancias EC2
que forman parte de un ECS
actúan como host de Docker
, 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 o registra (mediante la instalación del agente de contenedor de AWS ECS), el EC2 en ECS se convertirá en parte del clúster, pero seguirá siendo una única instancia 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).ECS
significa Elastic Container Service
; según la definición básica de clúster de computadoras , ECS
es básicamente una agrupación lógica de máquinas/instancias EC2
. Técnicamente hablando, ECS
es una mera configuración para un uso y administración eficientes de los recursos de su(s) instancia(s) EC2
, es decir, almacenamiento, memoria, CPU, etc. Para simplificarlo aún más, si ha lanzado un Amazon ECS
sin instancias EC2
añadidas, no sirve para nada, es decir, no puede hacer nada al respecto. ECS
solo tiene sentido una vez que se le agregan una (o más) instancias EC2
.
La siguiente cosa confusa aquí es el término contenedor , que no son instancias de máquinas completamente virtualizadas, y Docker es una tecnología que podemos usar para crear instancias de contenedores. Docker
es una utilidad que puede instalar en nuestra máquina, lo que la convierte en un host Docker
, y en este host puede crear contenedores (igual que las máquinas virtuales, pero mucho más livianos). En resumen, ECS
se trata solo de la agrupación en clústeres de instancias EC2 y utiliza Docker
para crear instancias de contenedores/instancias/máquinas virtuales en estos hosts ( EC2
) .
Todo lo que necesita hacer es iniciar un ECS
y registrar/agregar tantas instancias EC2
como necesite. Puede agregar/registrar instancias EC2, todo lo que necesita es que Amazon ECS Container Agent se ejecute en su instancia/máquina EC2, lo que se puede hacer de forma manual o directamente utilizando la AMI especial (Amazon Machine Image), es decir, la AMI optimizada para Amazon ECS, que ya tiene el agente de contenedores de Amazon ECS. Durante el lanzamiento de una nueva instancia EC2, el agente la registra automáticamente en el clúster de ECS predeterminado.
El agente de contenedor que se ejecuta en cada una de las instancias (instancias EC2
) dentro de un clúster de Amazon ECS
envía información sobre las tareas en ejecución actuales y la utilización de recursos de la instancia a Amazon ECS, e inicia y detiene tareas cada vez que recibe una solicitud de Amazon ECS. Para obtener más información, consulte Agente de contenedores de Amazon ECS . Una vez configurado, cada una de las instancias de contenedor creadas (de cualquier máquina/nodo EC2
) será una instancia en el enjambre de Amazon ECS
.
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 del 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 bien, si tiene un archivo ecs.config en Amazon S3 y ha habilitado el acceso de solo lectura de Amazon S3 a su rol de instancia de contenedor, elija la lista Detalles avanzados y pegue el siguiente script en el campo de datos del usuario, reemplazando your_bucket_name con el nombre de su depósito 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 instancia de EC2
sin ECS
. Instale cualquiera de las tecnologías de contenedorización, es decir, Docker
y ejecute el comando de creación de contenedor, configurando su EC2
como un host de Docker
, y tenga tantos contenedores de Docker
como desee (o tanto como lo permitan los recursos de su EC2
).
La principal diferencia son las instancias de Fargate que proporciona ECS.
Bien, como saben, 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 proporcionar eso.
Deberá instalar ecs-agent
en EC2 para establecer una conexión con ECS. Y ECS también puede monitorear los usos de recursos en su EC2. Entonces, básicamente, elige el tipo de EC2 de más alto nivel, luego más recursos (CPU/MEM) que puede usar su contenedor.
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 " con capacidad de escalado automático o como una " Tarea " ad-hoc.
Los servicios y tareas se ejecutan en un " Cluster ". Originalmente, un clúster era un grupo de uno o más servidores EC2 preconfigurados que ejecutaban ECS Cluster Agent. El Agente de clúster programaría los contenedores en el servidor EC2. Estos servidores EC2 aparecen en su lista de instancias de EC2 y se cobran a los costos regulares por minuto de EC2. Incluso puede acceder a ellos mediante SSH como cualquier servidor de EC2 normal. Si quisiera más capacidad para ejecutar más servicios o tareas, o si quisiera resiliencia 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 de EC2. Simplemente defina la cantidad de CPU y memoria que requiere su tarea o servicio para operar, lo que significa que solo paga por el tiempo de CPU y memoria en lugar de EC2.
ECS es un orquestador de contenedores como Kubernetes o Docker Swarm.
ECS significa ' Servicio de contenedor elástico '. Es un servicio de orquestación de contenedores.
Supongamos que tiene un contenedor de Docker ejecutándose y decide actualizar la imagen de Docker. Es una tarea relativamente fácil detener, extraer y ejecutar si tiene un contenedor en ejecución, pero es tedioso realizar los mismos pasos si tiene de 10 a 100 contenedores en ejecución.
Con AWS ECS puede tener este control. Usted especifica si se requiere una actualización, proporcione la identificación de imagen más reciente y ECS manejará los comandos de detención, extracción y ejecución, etc. por usted. También proporciona muchas más características adicionales, consulte: https://aws.amazon.com/ecs/features/
EC2 significa ' Elastic Compute Cloud '. En términos simples, es una máquina virtual.
ECS usa EC2 para ejecutar sus contenedores.
'Estos contenedores acoplables en ejecución (tareas) se ejecutan en instancias EC2' .