Марафон против Кубернеса против Докера Рой на DC/OS с докерными контейнерами

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

Например, когда лучше использовать марафон/хроносы, чем Кубернетес, и наоборот?

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

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

Ответ 1

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

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

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

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

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

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

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

  • Вы хотите запустить Docker или не-Docker задачи, которые должны выйти.
  • Вы хотите запланировать выполнение задачи в определенное время/расписание (a la cron).
  • Вы хотите запланировать рабочий процесс DAG зависимых задач.
  • Вы хотите запускать и отслеживать задания через веб-интерфейс или REST API.
  • Вы хотите использовать фреймворк, построенный с самого начала с помощью Mesos.

Ответ 2

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