tutorial fargate eks ecs aws amazon-web-services amazon-ec2 amazon-ecs

amazon-web-services - fargate - ecs tutorial



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

Recién estoy comenzando con AWS EC2. Entiendo que EC2 es como una computadora remota donde puedo hacer casi todo lo que quiero. Luego 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?


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 iniciar aplicaciones de contenedor. La principal distinción entre los dos servicios es que con EC2 debe administrar cada instancia por separado en cualquier 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á como base de implementación de sus aplicaciones de contenedor, permitiéndole tratar todas las instancias en el 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 EC2 dentro de un clúster ECS, los contenedores están listos para ejecutarse en él. En resumen, 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.


En palabras simples, ECS es un administrador, mientras que las instancias de EC2 son como los 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 "acoplables", se presentará 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.


En pocas palabras, Elastic Container Service (ECS) es un servicio de orquestación de contenedores 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 Cluster 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 EC2 y se cobran a un costo regular de EC2 por minuto: incluso puede usar SSH en ellos como cualquier servidor EC2 normal. Si desea más capacidad para ejecutar más Servicios o Tareas, o si desea resistencia frente a fallas 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 operar, lo que significa que solo paga por el tiempo de CPU y memoria en lugar del EC2.


Tu pregunta

¿ECS es solo una instalación acoplable en EC2? Si ya tengo un EC2, entonces comienzo 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 forman parte de un ECS actúan como host Docker , es decir, ECS puede enviar comandos para lanzar un contenedor en ellas ( EC2 ). Si ya tiene un EC2 y luego inicia ECS, seguirá teniendo una única instancia. Si agrega / registra (instalando AWS ECS Container Agent) el EC2 a ECS pasará a formar 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).
  • ECS significa Elastic Container Service : según la definición básica del clúster informático , 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 gestión eficiente 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 de EC2 agregadas, no sirve de nada, es decir, no puede hacer nada al respecto. ECS tiene sentido solo una vez que se le agregan una (o más) instancias de EC2 .

La siguiente cosa confusa aquí es el término contenedor , que no es instancias de máquina totalmente virtualizadas, y Docker es una tecnología que podemos usar para crear instancias de contenedor. 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 livianas). En resumen, ECS trata solo de la agrupación de instancias de 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 de EC2 como necesite. Puede agregar / registrar instancias EC2, todo lo que necesita es Amazon ECS Container Agent ejecutándose en su instancia / máquina EC2, que puede hacerse manualmente o directamente utilizando la AMI especial (Amazon Machine Image), es decir, 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 ECS predeterminado.

El agente 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 actuales en ejecución 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 configurada, 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: Inicio de una instancia de contenedor de Amazon ECS :

Elija un 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 que se describen en Instalación del Agente de contenedor de Amazon ECS .

De manera predeterminada, su instancia de contenedor se inicia en su clúster predeterminado. Si desea iniciar en su propio clúster en lugar del predeterminado, elija la lista Detalles avanzados y pegue el siguiente script en el campo 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 Datos de 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 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 EC2 sin ECS . Instale cualquiera de las tecnologías de contenedorización, es decir, Docker y ejecute el comando crear contenedor, establezca su EC2 como host Docker y tenga tantos contenedores Docker como desee (o la cantidad de recursos que permita su EC2 ).