Docker-Swarm, Kubernetes, Mesos & Core-OS Fleet

Я относительно новичок в этом, но у меня возникают проблемы с четкой картиной среди перечисленных технологий.

Хотя, все они пытаются решить разные проблемы, но имеют общие черты. Я хотел бы понять, что такое общие вещи, а что другое. Вполне вероятно, что сочетание нескольких будет здорово, если да, то каковы они?

Я перечисляю некоторые из них вместе с вопросами, но было бы здорово, если бы кто-то их подробно описал и ответил на вопросы.

  • Кубернетес против Мезоса:

    Эта ссылка

    В чем разница между Mesos Apache и Кубернетом Google

    дает хорошее представление о различиях, но я не могу понять, почему Кубернетес должен работать над Mesos. Это больше связано с объединением двух решений с открытым исходным кодом?

  • Кубернетес против флота Core-OS:

    Если я использую кубернеты, нужен ли флот?

  • Как Docker-Swarm вписывается во все вышеперечисленное?

Ответ 1

Раскрытие информации: Я ведущий инженер на Кубернете

Я думаю, что Mesos и Kubernetes в основном нацелены на решение подобных проблем с запуском кластерных приложений, у них разные истории и разные подходы к решению проблемы.

Mesos фокусирует свою энергию на очень общем планировании и подключении нескольких разных планировщиков. Это означает, что он позволяет системам типа Hadoop и Marathon сосуществовать в одной и той же среде планирования. Мезос менее ориентирован на запуск контейнеров. Мезос существовал до широкого интереса к контейнерам и был повторно заменен частями для поддержки контейнеров.

В отличие от этого, Kubernetes был разработан с нуля, чтобы быть средой для создания распределенных приложений из контейнеров. Он включает примитивы для репликации и обнаружения сервисов в качестве основных примитивов, где, поскольку такие вещи добавляются через фреймворки в Мезосе. Основной задачей Kubernetes является система построения, управления и управления распределенными системами.

Флот - это распределитель задач более низкого уровня. Это полезно для начальной загрузки кластерной системы, например, CoreOS использует ее для распространения агентов и двоичных файлов kubernetes на компьютеры в кластере, чтобы включить кластер kubernetes. На самом деле он не предназначен для решения одних и тех же задач разработки распределенных приложений, и думаю, что это больше похоже на systemd/init.d/upstart для вашего кластера. Это не требуется, если вы запускаете кубернете, вы можете использовать другие инструменты (например, соль, кукольный, прочий, шеф-повар,...) для выполнения того же бинарного распределения.

Swarm - это попытка Docker расширить существующий API Docker, чтобы кластер машин выглядел как один Docker API. По сути, наш опыт работы в Google и других странах показывает, что API node недостаточно для API кластера. Вы можете увидеть эту дискуссию здесь: https://github.com/docker/docker/pull/8859 и здесь: https://github.com/docker/docker/issues/8781 p >

Надеюсь, что это поможет! Присоединяйтесь к нам в IRC @# google-контейнерах, если вы хотите поговорить больше.

Ответ 2

Я думаю, что самый простой ответ заключается в том, что нет простого ответа. Быстрое увеличение мощности контейнеров, и Docker, в частности, оставил вакуум мощности для "планирования и оркестровки контейнеров", что бы это ни значило. На самом деле это означает, что у вас есть ряд технологий, которые могут работать в гармонии на некоторых уровнях, но с определенными аспектами конкуренции. Например, Kubernetes можно использовать как единый магазин для развертывания и управления контейнерами в вычислительном кластере (как первоначально разработал Google), но также мог бы сидеть на флоте, используя уровень устойчивости, который Fleet предоставляет на CoreOS.

Как заявляет Google vid Kubernetes не является полным решением для масштабирования контейнера в коробке, но является хорошим выражением для начала. Точно так же вы на какой-то стадии ожидаете, что Apache Mesos сможет работать с Kubernetes, но не с Marathon, так как Marathon, похоже, выполняет ту же роль, что и Kubernetes. Где-то я думаю, что я читал, что это может стать частью тех же усилий, но я могу ошибаться в этом - это действительно стратегическое направление Мезосферы и соответствующее принятие принципов Кубернеса.

В основной записи DockerCon Соломон Хейкс предположил, что Swarm будет уровнем, который может обеспечить общий интерфейс для многих структур оркестровки и планирования. Из того, что я вижу, Swarm разработан, чтобы обеспечить гладкий рабочий процесс развертывания Docker, работая с некоторыми существующими инфраструктурами рабочего процесса контейнеров, такими как Deis, но достаточно гибкими, чтобы обеспечить "супертяжелое" развертывание и управление ресурсами, такие как Mesos.

Надеюсь, это поможет - это может быть огромный пост. Я думаю, что ключевым моментом является то, что это молодые, развивающиеся службы, которые, вероятно, будут сливаться и стать совместимыми, но нам нужно проехать в ближайшие 12 месяцев, чтобы посмотреть, как это происходит. В этой проблеме есть очень умные люди, поэтому будущее выглядит очень ярким.

Ответ 3

Насколько я понимаю:

Мезос, Кубернетес и Флот все пытаются решить очень похожую проблему. Идея состоит в том, что вы абстрагируете все свое оборудование от разработчиков, а "инструмент управления кластерами" - все это для вас. Тогда все, что вам нужно сделать, это предоставить контейнер кластеру, дать ему некоторую информацию (постоянно ее запускать, масштабировать, если X и т.д.), И менеджер кластера сделает это.

С Mesos он выполняет все управление кластерами для вас, но не включает планировщик. Планировщик - это бит, который говорит, что этот процесс требует 2 procs и 512MB RAM, и у меня есть машина там с этим бесплатным, поэтому я запустил его на этой машине. Планировщики плагинов доступны для Mesos: Marathon и Chronos, и вы можете написать свой собственный. Это дает вам много возможностей для распределения ресурсов и масштабирования кластеров и т.д.

Флот и Кубернетес, похоже, абстрагируют эти детали деталей (так что вам не нужно писать свой собственный планировщик в основном). Это означает, что вы должны определить свои задачи и представить их в формате/порядке, определенном Флотом или Кубернете, а затем они возьмут на себя и планируют задачи (контейнеры) для вас.

Итак, я предполагаю: использование Mesos может означать немного больше работы при написании вашего собственного планировщика, но, при необходимости, обеспечивает большую гибкость.

Я думаю, что идея запуска Kubernetes поверх Mesos заключается в том, что Kubernetes выступает в качестве планировщика для Mesos. Лично я не уверен, какие выгоды это приносит за запуск одного или другого самостоятельно (хотя, надеюсь, кто-то скачет и объяснит!)

Как сказал MikeB.. в первые дни, и все это для захватов (следите за Amazon ECS), так что существует много конкурирующих стандартов и много перекрытий!

-edit- Я не упоминал Docker swarm, так как у меня на самом деле нет большого опыта.

Ответ 4

Для тех, кто подходит к этому после 2017 года, флот устарел. Не используйте его больше.

Флотские документы говорят, что "флот больше не активно развивается или поддерживается CoreOS" и ссылается на Контейнерная оркестровка: переход от флота к Кубернетес. Флот был удален из Container Linux (ранее известный как CoreOS Linux) и заменен кубелетом Kubernetes (agent). Это совпало с корпоративным стержнем, предлагающим Tectonic (дистрибутив Kubernetes) в качестве основного продукта.