Яка різниця між Amazon ECS та Amazon EC2?


127

Я тільки починаю працювати на AWS EC2. Я розумію, що EC2 - це як віддалений комп'ютер, де я можу робити майже все, що хочу. Тоді я дізнався про ECS. Я знаю, що він використовує Докера, але я плутаю стосунки між цими двома.

Є ECS лише встановлення Docker в EC2? Якщо я вже маю EC2 і запускаю ECS, це означає, що у мене є два екземпляри?

Відповіді:


169

Твоє запитання

Є ECS лише встановлення докера в EC2? Якщо у мене вже є EC2, то я запускаю ECS, це означає, що у мене є два екземпляри?

Ні AWS ECS- це лише логічне групування (кластер) EC2екземплярів, і всі EC2екземпляри, що входять до ECSакта як Dockerхост, тобто ECS, можуть надсилати команду для запуску контейнера на них ( EC2). Якщо у вас вже є EC2, а потім запустіть ECS, ви все одно матимете один екземпляр. Якщо ви додасте / зареєструєте (встановивши агент контейнера AWS ECS) EC2 до ECS, він стане частиною кластера, але все ще єдиним екземпляром EC2.

Амазонський ECS без жодного зареєстрованого EC2 (доданий до кластеру) нічого не підходить.


TL; ЛІКАР

Огляд

  • EC2 - це просто віддалена (віртуальна) машина.
  • ECSрозшифровується як Elastic Container Service- згідно з базовим визначенням комп'ютерного кластеру , ECSце в основному логічне групування EC2машин / екземплярів . Технічно кажучи ECS- це просто конфігурація для ефективного використання та управління ресурсами вашого EC2 екземпляра, тобто сховищем, пам'яттю, процесором тощо.

Для подальшого спрощення, якщо ви запустили Amazon ECSбез EC2доданих до нього жодних примірників, це нічого не потрібно, тобто ви нічого не можете з цим зробити. ECSмає сенс лише після того, EC2як до нього додаються один (або більше) екземплярів.

Наступне заплутане тут - термін контейнера - який не є повністю віртуалізованими машинними екземплярами, і Docker - це одна з технологій, яку ми можемо використовувати для створення екземплярів контейнерів. Dockerце утиліта, яку ви можете встановити на нашій машині, що робить її Dockerхостом, а на цьому хості ви можете створювати контейнери (такі ж, як і віртуальні машини - але набагато більше легкої ваги). Підводячи підсумок, ECSйдеться лише про кластеризацію екземплярів EC2 та використання Dockerдля інстанцізації контейнерів / екземплярів / віртуальних машин на цих ( EC2) хостах .

Все, що вам потрібно зробити, це запустити ECSі зареєструвати / додати EC2до нього стільки екземплярів, скільки вам потрібно. Ви можете додати / зареєструвати EC2 екземпляри, все що вам потрібно, це Amazon ECS Container Agent, що працює на вашому екземплярі / машині EC2, що можна зробити вручну або безпосередньо за допомогою спеціального AMI (зображення Amazon Machine), тобто Amazo ECS-оптимізованого AMI, який вже має Агент з контейнерів Амазонки ECS. Під час запуску нового екземпляра EC2 Агент автоматично реєструє його до кластеру ECS за замовчуванням.

Контейнер агент працює на кожному з випадків ( EC2екземпляри) в межах Amazon ECSкластера посилає інформацію про поточні запущених задачах примірника і використанні ресурсів на Amazon ECS і запускає і зупиняє завдання будь-якого рази , коли він отримує запит від Amazon ECS. Для отримання додаткової інформації див . Агент з контейнерів Amazon ECS . Після встановлення кожен із створених екземплярів контейнера (незалежно від EC2машини / вузла) буде екземпляром у Amazon ECSрої 's.


Для отримання додаткової інформації - прочитайте крок 10 з цієї документації: Запуск екземпляра контейнера Amazon ECS :

Виберіть AMI для свого екземпляра контейнера. Ви можете вибрати AMI-оптимізований AMS AMI або іншу операційну систему, наприклад, CoreOS або Ubuntu. Якщо ви не вибрали AMI, оптимізований Amazon ECS, вам потрібно дотримуватися процедур, встановлених у встановленні агента контейнерів Amazon ECS .

За замовчуванням ваш екземпляр контейнера запускається у ваш кластер за замовчуванням. Якщо ви хочете запустити у власний кластер замість типового, виберіть список розширених деталей та вставте наступний скрипт у поле Дані користувача, замінивши ім'я_кластера_іменем на ім’я вашого кластера.

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

Або якщо у вас є файл ecs.config в Amazon S3 і дозволили Amazon S3 доступ лише для читання до вашої ролі екземпляра контейнера, виберіть список «Додаткові відомості» та вставте наступний скрипт у поле «Дані користувача», замінивши своє ім’я_букет_іменем на ім’я ваше відро, щоб встановити AWS CLI і записати файл конфігурації під час запуску. Примітка. Щоб отримати додаткові відомості про цю конфігурацію, див. Зберігання конфігурації екземпляра контейнера в Amazon S3.

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

Просто для того, щоб уточнити це далі - ви можете створювати контейнери на своєму одиночному EC2екземплярі без ECS. Встановіть будь-який з контейнеризації технології , тобто Dockerі запустити команду створення контейнера, настройка Вашого EC2як Dockerгосподар, і мають стількох Dockerконтейнерів , як ви хочете (або стільки , скільки ваші EC2ресурси «s дозволяють).


8
Чи не означає ECS для служби еластичних контейнерів?
lfk

1
Слід зазначити, що ця відповідь тепер суттєво застаріла із запуском AWS Fargate на початку 2018 року (який працює на ECS): aws.amazon.com/fargate
bsplosion

77

Простими словами, ECS є менеджером, тоді як випадки EC2 - це як співробітники. Усі співробітники (EC2) в цьому менеджері (ECS) можуть виконувати завдання "Докер", а менеджер також досить добре розуміє "докер". Тож, коли вам потрібні "докерські" ресурси, ви з'являєтесь до менеджера. Керівник вже має статус кожного працівника (EC2), який вирішує, хто з них повинен виконувати завдання.

Тепер, повертаючись до свого питання, керівник без "працівника" не має сенсу.

введіть тут опис зображення


Дуже приємне пояснення. Ніж ви!
Метлі

Ну, у вас можуть бути екземпляри EC2 без ECS, але це було б просто як звичайна вірувальна машина.
Леа Рейманн

31

EC2 дозволяє запускати окремі екземпляри, які ви можете використовувати майже все, що завгодно. ECS - контейнерна послуга, що означає, що вона запустить екземпляри, які будуть готові до запуску контейнерних додатків. Основна відмінність між двома службами полягає в тому, що за допомогою EC2 ви повинні керувати кожним екземпляром окремо будь-яким способом, який ви обрали (вручну, використовуючи інструмент CM або будь-яким іншим способом) - розгортати свої програми та підтримувати зв’язок між серверами самостійно. ECS дозволяє запустити кластер машин, який буде виконувати функції розгортання ваших додатків для контейнерів, дозволяючи вам розглядати всі екземпляри кластеру як один великий екземпляр, доступний для вашої роботи контейнера.

І щоб відповісти на ваше запитання - Ви можете запустити кластер ECS без жодної інстанції в ньому, але тоді він нічого не зможе запустити на ньому. Після того як ви зареєструєте екземпляр EC2 всередині кластера ECS, контейнери готові працювати в ньому. Отже, суть полягає в тому, що ви можете використовувати як ECS, так і EC2 лише з одним екземпляром, але це не справжній випадок використання для цих служб.


3

Простіше кажучи, Elastic Container Service (ECS) - це служба оркестрування контейнерів Docker.

Ви можете попросити його запустити одне або кілька зображень Докера, або як " Сервіс ", здатний до автоматичного масштабування, або як спеціальний " Завдання ".

Служби та завдання виконуються на " Кластері ". Спочатку кластер представляв собою групу одного або декількох попередньо налаштованих EC2-серверів, на яких працює агент ECS Cluster. Агент кластерів планував би контейнери на сервері EC2. Ці EC2-сервери відображаються у вашому списку інстанцій EC2 і стягуються з регулярними витратами EC2 за хвилину - Ви навіть можете SSH на них, як і будь-який звичайний сервер EC2. Якщо ви хотіли б більше можливостей для запуску більше служб або завдань, або якщо ви хотіли стійкості проти відмови EC2, то ви б більше серверів EC2.

Близько листопада 2017 року AWS додав ECS Fargate . Тепер Кластер може працювати без сервера без надання вузлів EC2. Ви просто визначаєте об'єм процесора та пам'яті, необхідною для роботи Вашого завдання чи послуги, тобто ви просто платите за процесор і час пам'яті, а не за EC2.


2

Гаразд, як відомо, EC2 - це віртуальна машина на AWS, а ECS - це система оркестрування контейнерів на AWS.

Щоб використовувати ECS, вам потрібно запустити свій контейнер у деякі віртуальні машини, EC2 - це один із варіантів надання цього.

Вам потрібно буде встановити ecs-agentна EC2, щоб встановити з'єднання з ECS. ECS також може контролювати використання ресурсів вашого EC2. Отже, ви в основному вибираєте тип EC2 більш високого рівня, тоді ваш ресурс може використовувати більше ресурсів (CPU / MEM).


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.