Ваш вопрос
ECS - это просто докер, установленный в EC2? Если у меня уже есть EC2, то я запускаю ECS, значит ли это, что у меня два экземпляра?
Нет. AWS ECS
Это просто логическая группировка (кластер) EC2
экземпляров, и все EC2
экземпляры, входящие в состав какого-либо экземпляра, ECS
действуют как Docker
хост, т.е. ECS может отправить команду для запуска контейнера на них ( EC2
). Если у вас уже есть EC2, а затем вы запустите ECS, у вас все равно будет один экземпляр. Если вы добавите / зарегистрируете (установив AWS ECS Container Agent) EC2 в ECS, он станет частью кластера, но по-прежнему будет единственным экземпляром EC2.
Amazon ECS без зарегистрированного EC2 (добавленного в кластер) ни на что не годен.
TL; DR
Обзор
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 Image), то есть AMI, оптимизированного для Amazon ECS, который уже имеет агент контейнера Amazon ECS. Во время запуска нового экземпляра EC2 агент автоматически регистрирует его в кластере ECS по умолчанию.
Контейнер агент работает на каждом из случаев ( EC2
экземпляры) в пределах Amazon ECS
кластера посылает информацию о текущих запущенных задачах экземпляра и использовании ресурсов на Amazon ECS и запускает и останавливает задания всякого раза , когда он получает запрос от Amazon ECS. Дополнительные сведения см. В разделе Агент контейнера Amazon ECS . После установки каждый из созданных экземпляров контейнера (любой EC2
машины / узла) будет экземпляром в Amazon ECS
рое.
Для получения дополнительной информации прочтите шаг 10 этой документации: Запуск экземпляра контейнера Amazon ECS :
Выберите AMI для своего экземпляра контейнера. Вы можете выбрать AMI, оптимизированный для Amazon ECS, или другую операционную систему, например CoreOS или Ubuntu. Если вы не выбрали AMI, оптимизированный для Amazon ECS, вам необходимо выполнить процедуры, описанные в разделе Установка агента контейнера Amazon ECS .
По умолчанию ваш экземпляр контейнера запускается в кластере по умолчанию. Если вы хотите запустить свой собственный кластер вместо кластера по умолчанию, выберите список «Дополнительные сведения» и вставьте следующий сценарий в поле «Пользовательские данные», заменив your_cluster_name именем вашего кластера.
#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
Или, если у вас есть файл ecs.config в Amazon S3 и вы разрешили Amazon S3 доступ только для чтения к роли экземпляра контейнера, выберите список Advanced Details и вставьте следующий скрипт в поле User data, заменив your_bucket_name на имя ваше ведро, чтобы установить 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
Запустите команду create container, установив вас EC2
в качестве Docker
хоста, и получите столько Docker
контейнеров, сколько хотите (или столько, сколько EC2
позволяют ваши ресурсы).
Проще говоря, ECS - это менеджер, а экземпляры EC2 - это просто сотрудники. Все сотрудники (EC2) под этим менеджером (ECS) могут выполнять задачи «Docker», и менеджер также довольно хорошо понимает «docker». Итак, когда вам понадобятся «докерные» ресурсы, вы будете приходить к менеджеру. Менеджер уже имеет статус от каждого сотрудника (EC2) решает, какой из них должен выполнять задачу.
Теперь, возвращаясь к вашему вопросу, менеджер без «сотрудника» не имеет смысла.
источник
EC2 позволяет запускать отдельные экземпляры, которые можно использовать практически для чего угодно. ECS - это контейнерный сервис, что означает, что он будет запускать экземпляры, которые будут готовы к запуску контейнерных приложений. Основное различие между этими двумя сервисами заключается в том, что с EC2 вы должны управлять каждым экземпляром отдельно любым выбранным вами методом (вручную, с помощью инструмента CM или любым другим способом) - развертывать свои приложения и самостоятельно поддерживать соединение между серверами. ECS позволяет запускать кластер машин, который будет служить площадкой для развертывания ваших контейнерных приложений, позволяя рассматривать все экземпляры в кластере как один большой экземпляр, доступный для вашей рабочей нагрузки контейнера.
И чтобы ответить на ваш вопрос - вы можете запустить кластер ECS без экземпляров в нем, но тогда он не сможет ничего запускать на нем. После регистрации экземпляра EC2 внутри кластера ECS контейнеры готовы к работе в нем. Итак, суть в том, что вы можете использовать и ECS, и EC2 только с одним экземпляром, но это не реальный вариант использования, для которого были созданы эти службы.
источник
Проще говоря, Elastic Container Service (ECS) - это служба оркестрации контейнеров Docker.
Вы можете попросить его запустить один или несколько образов Docker либо как « Сервис » с возможностью автоматического масштабирования, либо как специальную « Задачу ».
Сервисы и задачи выполняются в « Кластере ». Первоначально кластер представлял собой группу из одного или нескольких предварительно настроенных серверов EC2, на которых запущен агент кластера ECS. Агент кластера будет планировать контейнеры на сервере EC2. Эти серверы EC2 отображаются в вашем списке инстансов EC2, и за них взимается обычная поминутная плата EC2 - вы даже можете подключиться к ним по SSH, как любой обычный сервер EC2. Если вам нужна большая мощность для запуска большего количества служб или задач или если вам нужна устойчивость к сбоям EC2, вам нужно больше серверов EC2.
Примерно в ноябре 2017 года AWS добавила ECS Fargate . Теперь кластер может работать «без сервера» без инициализации узлов EC2. Вы просто определяете количество процессора и памяти, которые требуются вашей задаче или службе для работы, что означает, что вы платите только за процессор и время памяти, а не за EC2.
источник
Хорошо, как вы знаете, EC2 - это виртуальная машина на AWS, а ECS - это система оркестровки контейнеров на AWS.
Чтобы использовать ECS, вам необходимо запустить свой контейнер на некоторых виртуальных машинах, EC2 является одним из вариантов для этого.
Вам нужно будет установить
ecs-agent
на EC2, чтобы установить соединение с ECS. Кроме того, ECS может отслеживать использование ресурсов на вашем EC2. Таким образом, вы выбираете более высокоуровневый тип EC2, чем больше ресурсов (CPU / MEM), которые может использовать ваш контейнер.источник
Основное отличие - это инстансы Fargate, которые предоставляет ECS.
источник