Marathon vs Kubernetes vs Docker Swarm на DC / OS с контейнерами Docker

101

Я ищу некоторые плюсы и минусы того, следует ли использовать Marathon и Chronos, Docker Swarm или Kubernetes при запуске контейнеров Docker на DC / OS.

Например, когда лучше использовать Marathon / Chronos, чем Kubernetes, и наоборот?

Сейчас я в основном экспериментирую, но, надеюсь, мы начнем использовать одну из этих служб в продакшене после лета. Это может дисквалифицировать Docker Swarm, поскольку я не уверен, будет ли он готов к тому времени.

Что мне нравится в Docker Swarm, так это то, что это, по сути, просто «команды Docker», и вам не нужно изучать что-то совершенно новое. Мы уже используем, docker-composeи это будет работать прямо из коробки с Docker Swarm (по крайней мере, теоретически), так что это будет большим плюсом. Меня больше всего беспокоит Docker Swarm, если он охватывает все варианты использования, необходимые для запуска системы в производственной среде.

Йохан
источник

Ответы:

167

Я попытаюсь разбить уникальные аспекты каждой среды оркестровки контейнеров в Mesos.

Используйте Docker Swarm, если:

Используйте Kubernetes-Mesos, если:

  • Вы хотите запустить K8s Pods, которые представляют собой группы контейнеров, совместно запланированных и размещенных вместе, совместно использующих ресурсы.
  • Вы хотите запустить службу вместе с одним или несколькими дополнительными контейнерами (например, архиватором журналов, монитором показателей), которые находятся рядом с родительским контейнером.
  • Вы хотите использовать обнаружение сервисов на основе меток K8s, балансировку нагрузки и управление репликацией.
  • См. Http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Используйте Marathon, если:

  • Вы хотите запустить Docker или долго работающие приложения / службы, отличные от Docker.
  • Вы хотите использовать атрибуты Mesos для планирования на основе ограничений.
  • Вы хотите использовать группы приложений и зависимости для запуска, масштабирования или обновления связанных служб.
  • Вы хотите использовать проверки работоспособности для автоматического перезапуска неработоспособных служб или отката нездоровых развертываний / обновлений.
  • Вы хотите интегрировать HAProxy или Consul для обнаружения сервисов.
  • Вы хотите запускать и отслеживать приложения через веб-интерфейс или REST API.
  • Вы хотите использовать фреймворк, построенный с самого начала с учетом Mesos.

Используйте Chronos, если:

  • Вы хотите запустить Docker или задачи, не относящиеся к Docker, которые должны завершиться.
  • Вы хотите запланировать запуск задачи в определенное время / по расписанию (а-ля cron).
  • Вы хотите запланировать рабочий процесс DAG зависимых задач.
  • Вы хотите запускать и отслеживать задания через веб-интерфейс или REST API.
  • Вы хотите использовать фреймворк, построенный с самого начала с учетом Mesos.
Адам
источник
1
Я просто хотел добавить, что начиная с K8s 1.6 он поддерживает следующее (некоторые из них уже давно): * Docker-CRI (бета) и cri-o, frakti, rkt (альфа) для контейнеров, отличных от Docker. * Проверки работоспособности, чтобы увидеть, когда контейнер запущен / больше не отвечает. * Воссоздание нездоровых стручков. * Крон любит задания, как повторяющиеся, так и однократные. * Пакетные задания (запускаются вручную и выполняются до завершения один раз). Поскольку сами «Мезосфера» говорят, что K8s - первоклассный гражданин на Мезосе, аргумент «построенный с самого начала» также кажется немного туманным ...
Йонас Шуберт Эрландссон
15

Хотя он немного устарел, может быть полезно прочитать В чем разница между Apache Mesos и Google Kubernetes , чтобы правильно понять некоторые основы. Также обратите внимание, что Mesos работает на другом уровне, чем Kubernetes / Marathon / Chronos. И последнее, но не менее важное: см. Docker Swarm + Mesos от Тимоти Чена, помня, что Marathon и Swarm могут работать одновременно в одном кластере Mesos.

Майкл Хаузенблас
источник