В чем разница между задачей и сервисом в AWS ECS?


114

Похоже, что можно запустить задачу или службу на основе определения задачи. В чем различия и сходства между Задачей и Услугой? Есть ли намек в том, что можно указать «группу задач» при создании задачи, но не службы? Являются ли задача и служба иерархически равными экземплярами определения задачи или служба состоит из задач?

Ответы:


236

Задача Определение представляет собой набор из 1 или более контейнеров конфигураций . Некоторым задачам может потребоваться только один контейнер, в то время как другим задачам может потребоваться 2 или более потенциально связанных контейнера, работающих одновременно. Определение задачи позволяет вам указать, какой образ Docker использовать, какие порты открывать, сколько ЦП и памяти выделять, как собирать журналы и определять переменные среды.

Задача создается при запуске задачи непосредственно, который запускает контейнер (ы) (определяется в определении задач) , пока они не будут остановлены или выйти самостоятельно, в какой момент они не заменяются автоматически . Непосредственный запуск задач идеально подходит для краткосрочных заданий, возможно, в качестве примера того, что было выполнено с помощью CRON.

Служба используется для гарантии того, что у вас всегда есть некоторое количество задач , работающих в любое время . Если контейнер задачи завершается из-за ошибки или базовый экземпляр EC2 выходит из строя и заменяется, служба ECS заменит сбойную задачу. Вот почему мы создаем кластеры, чтобы у Службы было достаточно ресурсов с точки зрения использования ЦП, памяти и сетевых портов. Для нас не имеет значения, на каком экземпляре Задачи выполняются, пока они выполняются. Конфигурация службы ссылается на определение задачи. Сервис отвечает за создание Задач .

Службы обычно используются для длительно работающих приложений, таких как веб-серверы. Например, если бы я развернул свой веб-сайт на базе Node.JS в Орегоне (us-west-2), я бы сказал, что, по крайней мере, три задачи выполняются в трех зонах доступности (AZ) ради высокой доступности; если один выходит из строя, у меня есть еще два, и отказавший будет заменен (прочтите это как самовосстановление !). Создание Сервиса - способ сделать это. Если бы в моем кластере было 6 экземпляров EC2, по 2 на каждую зону доступности, служба будет автоматически балансировать задачи по зонам, насколько это возможно, с учетом ЦП, памяти и сетевых ресурсов.

ОБНОВИТЬ:

Я не уверен, что стоит думать об этих вещах иерархически.

Еще одним очень важным моментом является то, что Служба может быть настроена для использования балансировщика нагрузки, так что по мере создания задач, то есть запуска контейнеров, определенных в определении задачи, служба автоматически регистрирует экземпляр EC2 контейнера в балансировщике нагрузки. Задачи нельзя настроить для использования балансировщика нагрузки, можно только службы.


1
Большое спасибо @talentedmrjones! Неужели это так же просто, как «использовать Task для краткосрочных заданий и использовать Service для длительных служб»? Есть ли шанс, что вы могли бы прокомментировать "Являются ли задача и служба иерархически равными экземплярами определения задачи, или служба состоит из задач"?
Боб Джонс

Чего я не понимаю: почему при создании задачи я могу изменять значения переменных окружения, но, похоже, это невозможно для службы
Николай Климчук

1
Сервисы @NikolayKlimchuk управляют только задачами - сами задачи определяют и используют envars.
bwobst

что такое "рабочая группа"
red888 05

@NikolayKlimchuk извините за поздний ответ. Службы используются для планирования контейнеров, задачи используются для определения контейнеров. Вот почему вы используете задачи для управления env vars.
talentedmrjones

42

Красиво объяснено словами @talentedmrjones. Картинка ниже поможет вам легко это визуализировать :)

Кластер, служба, экземпляр и задача EC2 в действии


Хорошая визуализация! :-)
sgsi

2
Если кто-то из читателей ответов хочет глубоко погрузиться в Amazon ECS, посетите сайт freecodecamp.org/news/… . Красиво объяснено!
realPK 09

@realPK действительно очень полезная страница, спасибо за рекомендацию!
Christophe

2

Определение задачи:

Это план, описывающий, какие контейнеры Docker запускать, и представляет ваше приложение. Он включает в себя несколько задач.

Определение задачи

Обслуживание:

Экземпляр определения задачи. Он также определяет минимальное и максимальное количество задач из одного запуска определения задачи в любой момент времени, автомасштабирование и балансировку нагрузки.

Экземпляры контейнеров ECS:

Это экземпляр EC2, на котором работает Docker и агент контейнера ECS. Агент заботится о связи между ECS и экземпляром, предоставляя статус запущенных контейнеров и управляя запуском новых.

Отношения:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.