Марафон проти Kubernetes проти Docker Swarm на DC / OS з контейнерами Docker


101

Я шукаю деякі плюси і мінуси, чи варто їхати з Marathon і Chronos, Docker Swarm або Kubernetes під час запуску контейнерів Docker на DC / OS.

Наприклад, коли краще використовувати Марафон / Хронос, ніж Кубернетес і навпаки?

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

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

Відповіді:


167

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

Використовуйте Docker Swarm, якщо:

Використовуйте Kubernetes-Mesos, якщо:

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

Використовуйте Марафон, якщо:

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

Використовуйте Chronos, якщо:

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

1
Я просто хотів додати, що для K8s 1.6 він підтримує наступні (деякі з них тривалий час): * Docker-CRI (бета) та cri-o, frakti, rkt (альфа) для контейнерів, які не є Docker. * Здоров'я перевіряє, коли контейнер запустився / більше не відповідає. * Відпочинок нездорових стручків. * Робота з Cron - як повторювана, так і одноразова. * Пакетні завдання (запускаються вручну і запускаються до завершення один раз). Оскільки самі Mesosphere кажуть, що K8s є першокласним громадянином Mesos, аргумент "побудований з самого початку" теж трохи неясний ...
Йонас Шуберт Ерландссон

15

Хоча це трохи застаріло, може бути корисним прочитати, в чому різниця між Meso Apache і Kubernetes від Google , щоб визначити деякі основи. Також зауважте, що Месос працює на іншому рівні, ніж Kubernetes / Marathon / Chronos. І останнє, але не менш важливе, див. Docker Swarm + Mesos від Тімоті Чена, маючи на увазі, що Marathon та Swarm можуть діяти одночасно на одному кластері Mesos.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.