Quelle est la différence entre Amazon ECS et Amazon EC2?

127

Je ne fais que commencer sur AWS EC2. Je comprends qu'EC2 est comme un ordinateur distant sur lequel je peux faire à peu près tout ce que je veux. Puis j'ai découvert ECS. Je sais qu'il utilise Docker, mais je suis confus quant à la relation entre les deux.

ECS est-il juste une installation Docker dans EC2? Si j'ai déjà un EC2 et que je démarre un ECS, cela signifie-t-il que j'ai deux instances?

paynestrike
la source

Réponses:

169

Ta question

ECS est-il juste une installation de docker dans EC2? Si j'ai déjà un EC2, alors je démarre un ECS, cela signifie-t-il que j'ai deux instances?

Non. AWS ECSEst juste un regroupement logique (cluster) d' EC2instances, et toutes les EC2instances faisant partie d'un ECSagissent en tant Dockerqu'hôte, c'est-à-dire qu'ECS peut envoyer une commande pour lancer un conteneur sur elles ( EC2). Si vous avez déjà un EC2 et que vous lancez ensuite ECS, vous aurez toujours une seule instance. Si vous ajoutez / enregistrez (en installant l'agent de conteneur AWS ECS) l'EC2 à ECS, il deviendra la partie du cluster, mais toujours une instance unique d'EC2.

Un Amazon ECS sans EC2 enregistré (ajouté au cluster) n'est bon à rien.


TL; DR

Un aperçu

  • EC2 - est simplement une machine distante (virtuelle).
  • ECSsignifie Elastic Container Service- selon la définition de base du cluster d'ordinateurs , ECSest essentiellement un groupement logique de EC2machines / instances . Techniquement parlant, il ECSs'agit d'une simple configuration pour une utilisation et une gestion efficaces des ressources de votre EC2 ( vos) instance (s) à savoir le stockage, la mémoire, le processeur, etc.

Pour simplifier encore plus, si vous avez lancé un Amazon ECSsans aucune EC2instance ajoutée, c'est bon à rien, c'est-à-dire que vous ne pouvez rien y faire. ECSn'a de sens qu'une fois qu'une (ou plusieurs) EC2instances y sont ajoutées.

La prochaine chose déroutante ici est le terme de conteneur - qui n'est pas des instances de machine entièrement virtualisées, et Docker est une technologie que nous pouvons utiliser pour créer des instances de conteneur. Dockerest un utilitaire que vous pouvez installer sur notre machine, ce qui en fait un Dockerhôte, et sur cet hôte, vous pouvez créer des conteneurs (comme les machines virtuelles - mais beaucoup plus légers). Pour résumer, il ECSs'agit simplement de mettre en cluster des instances EC2 et d'utiliser Dockerpour instancier des conteneurs / instances / machines virtuelles sur ces EC2hôtes ( ) .

Tout ce que vous avez à faire est de lancer ECSet d'enregistrer / d'ajouter autant d' EC2instances que vous en avez besoin. Vous pouvez ajouter / enregistrer des instances EC2, tout ce dont vous avez besoin est Amazon ECS Container Agent s'exécutant sur votre instance / machine EC2, ce qui peut être fait manuellement ou directement à l'aide de l'AMI spéciale (Amazon Machine Image), c'est-à-dire AMI optimisée pour Amazon ECS, qui a déjà l'agent de conteneur Amazon ECS. Lors du lancement d'une nouvelle instance EC2, l'agent l'enregistre automatiquement dans le cluster ECS par défaut.

L' agent de conteneur s'exécutant sur chacune des instances ( EC2instances) d'un Amazon ECScluster envoie des informations sur les tâches en cours d'exécution de l'instance et l'utilisation des ressources à Amazon ECS, et démarre et arrête les tâches chaque fois qu'il reçoit une demande d'Amazon ECS. Pour plus d'informations, consultez Agent de conteneur Amazon ECS . Une fois définie, chacune des instances de conteneur créées (quelle que soit la EC2machine / le nœud) sera une instance dans Amazon ECSle swarm de.


Pour plus d'informations, lisez l'étape 10 de cette documentation: Lancement d'une instance de conteneur Amazon ECS :

Choisissez une AMI pour votre instance de conteneur. Vous pouvez choisir l'AMI optimisée pour Amazon ECS ou un autre système d'exploitation, tel que CoreOS ou Ubuntu. Si vous ne choisissez pas l'AMI optimisée pour Amazon ECS, vous devez suivre les procédures décrites dans Installation de l'agent de conteneur Amazon ECS .

Par défaut, votre instance de conteneur se lance dans votre cluster par défaut. Si vous souhaitez lancer dans votre propre cluster au lieu de celui par défaut, choisissez la liste Détails avancés et collez le script suivant dans le champ Données utilisateur, en remplaçant your_cluster_name par le nom de votre cluster.

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

Ou, si vous disposez d'un fichier ecs.config dans Amazon S3 et avez activé l'accès en lecture seule Amazon S3 à votre rôle d'instance de conteneur, choisissez la liste Détails avancés et collez le script suivant dans le champ Données utilisateur, en remplaçant your_bucket_name par le nom de votre compartiment pour installer l'AWS CLI et écrire votre fichier de configuration au moment du lancement. Remarque Pour plus d'informations sur cette configuration, consultez Stockage de la configuration d'instance de conteneur dans Amazon S3.

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

Juste pour clarifier les choses, vous pouvez créer des conteneurs sur votre seule EC2instance sans ECS. Installez n'importe quelle technologie de conteneurisation, c'est-à Docker- dire et exécutez la commande create container, en définissant votre EC2comme Dockerhôte, et ayez autant de Dockerconteneurs que vous le souhaitez (ou autant que les EC2ressources de vos ressources le permettent).

Nabeel Ahmed
la source
8
ECS ne signifie-t-il pas Elastic Container Service?
lfk
1
Il convient de noter que cette réponse est désormais largement dépassée avec le lancement d'AWS Fargate début 2018 (qui exécute ECS): aws.amazon.com/fargate
bsplosion
77

En termes simples, ECS est un gestionnaire tandis que les instances EC2 sont comme les employés. Tous les employés (EC2) sous ce gestionnaire (ECS) peuvent effectuer des tâches "Docker" et le gestionnaire comprend également assez bien "docker". Ainsi, chaque fois que vous avez besoin de ressources "docker", vous vous présentez au Manager. Le gestionnaire a déjà le statut de chaque employé (EC2) décide lequel doit effectuer la tâche.

Maintenant, pour revenir à votre question, un gestionnaire sans «employé» n'a pas de sens.

entrez la description de l'image ici

subodhkarwa
la source
Très belle explication. Que toi!
Matley
Eh bien, vous pouvez avoir des instances EC2 sans ECS, mais ce serait juste comme une simple machine virutale.
Lea Reimann le
31

EC2 vous permet de lancer des instances individuelles que vous pouvez utiliser pour à peu près tout ce que vous voulez. ECS est un service de conteneur, ce qui signifie qu'il lancera des instances qui seront prêtes à lancer des applications de conteneur. La principale distinction entre les deux services est qu'avec EC2, vous devez gérer chaque instance séparément dans la méthode que vous choisissez (manuellement, à l'aide d'un outil CM ou de toute autre manière) - déployez vos applications et maintenez vous-même la connexion entre les serveurs. ECS vous permet de lancer un cluster de machines qui servira de terrain de déploiement de vos applications de conteneur, vous permettant de traiter toutes les instances du cluster comme une seule grande instance disponible pour votre charge de travail de conteneur.

Et pour répondre à votre question, vous pouvez démarrer un cluster ECS sans instance, mais il ne pourra rien y exécuter. Une fois que vous avez enregistré une instance EC2 dans un cluster ECS, les conteneurs sont prêts à y être exécutés. Donc, l'essentiel est que vous pouvez utiliser à la fois ECS et EC2 avec une seule instance, mais ce n'est pas le cas d'utilisation réel pour lequel ces services ont été conçus.

Yaron Idan
la source
3

En termes simples, Elastic Container Service (ECS) est un service d'orchestration de conteneurs Docker.

Vous pouvez lui demander d'exécuter une ou plusieurs images Docker, soit en tant que « Service » capable de mise à l'échelle automatique ou en tant que « Tâche » ad hoc .

Les services et tâches s'exécutent sur un « cluster ». À l'origine, un cluster était un groupe d'un ou de plusieurs serveurs EC2 préconfigurés exécutant ECS Cluster Agent. L'agent de cluster planifierait les conteneurs sur le serveur EC2. Ces serveurs EC2 apparaissent dans votre liste d'instances EC2 et sont facturés au prix normal EC2 par minute - Vous pouvez même utiliser SSH sur eux comme n'importe quel serveur EC2 normal. Si vous vouliez plus de capacité pour exécuter plus de services ou de tâches, ou si vous vouliez une résilience contre les pannes EC2, vous auriez plus de serveurs EC2.

Vers novembre 2017, AWS a ajouté ECS Fargate . Désormais, un cluster peut fonctionner "sans serveur" sans approvisionner les nœuds EC2. Vous définissez simplement la quantité de CPU et de mémoire dont votre tâche ou service a besoin pour fonctionner, ce qui signifie que vous ne payez que pour le temps CPU et mémoire plutôt que pour l'EC2.

Alastair McCormack
la source
2

D'accord, comme vous le savez, EC2 est une machine virtuelle sur AWS et ECS est un système d'orchestration de conteneurs sur AWS.

Pour utiliser ECS, vous devez exécuter votre conteneur dans certaines machines virtuelles, EC2 étant l'une des options pour fournir cela.

Vous devrez installer ecs-agentsur EC2 pour établir une connexion avec ECS. Et ECS peut également surveiller les utilisations des ressources sur votre EC2. Donc, fondamentalement, vous choisissez le type EC2 de plus haut niveau, puis plus de ressources (CPU / MEM) que votre conteneur peut utiliser.

David Hsu
la source
0

La différence majeure réside dans les instances Fargate fournies par ECS.

hongdeshuai
la source