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

Ответы (4)

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

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

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

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

ОБНОВЛЕНИЕ:

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

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

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

Cluster, Service, EC2 Instance and Task in action

Diagram of ECS objects and how they relate

Определение задачи: (Это конфигурация) Определение задачи - это схема вашего приложения, описывающая один или несколько контейнеров с помощью атрибутов. Некоторые атрибуты настраиваются на уровне задачи, но большинство атрибутов настраивается для каждого контейнера.

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

Определения задач указывают информацию о контейнерах для вашего приложения (веб), например, сколько контейнеров является частью вашей задачи, какие ресурсы они будут использовать, как они взаимодействуют друг с другом и какой порт хоста они будут использовать. Может быть типа Fargate и EC2.

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

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

Task Definition

Сервис:

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

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

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

Отношение:

enter image description here

2022 WebDevInsider