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
significaElastic 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 / instanciasEC2
. 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
).