В чем разница между Apache Mesos и Google Kubernetes

385

В чем именно разница между Apache Mesos и Google Kubernetes? Я понимаю, что оба программного обеспечения управления кластером серверов. Кто-нибудь может уточнить, где основные различия - когда какие рамки предпочтительнее?

Почему вы хотите использовать Kubernetes на вершине мезосферы ?

binaryanomaly
источник

Ответы:

516

Kubernetes - это проект с открытым исходным кодом, который привносит возможности управления кластерами в стиле Google в мир виртуальных машин или в сценарии «на металле». Он очень хорошо работает с современными средами операционных систем (такими как CoreOS или Red Hat Atomic), которые предлагают облегченные вычислительные «узлы», которые управляются для вас. Он написан на Golang и является легким, модульным, портативным и расширяемым. Мы (команда Kubernetes) работаем с рядом различных технологических компаний (включая Mesosphere, которая курирует проект с открытым исходным кодом Mesos), чтобы установить Kubernetes в качестве стандартного способа взаимодействия с вычислительными кластерами. Идея состоит в том, чтобы воспроизвести шаблоны, которые, как мы видим, нужны людям для создания кластерных приложений, основываясь на нашем опыте работы в Google. Некоторые из этих концепций включают в себя:

  • стручки - способ группировки контейнеров
  • контроллеры репликации - способ управления жизненным циклом контейнеров
  • метки - способ поиска и запроса контейнеров, и
  • услуги - набор контейнеров, выполняющих общую функцию.

Таким образом, с одним только Kubernetes у вас будет что-то простое, легко настраиваемое, переносимое и расширяемое, которое добавляет «кластер» в качестве существительного к вещам, которыми вы управляете, самым легким способом. Запустите приложение в кластере и перестаньте беспокоиться об отдельном компьютере. В этом случае кластер является гибким ресурсом, как и виртуальная машина. Это логическая вычислительная единица. Включите его, используйте его, измените его размер, выключите его быстро и легко.

С Мезосом существует довольно много совпадений с точки зрения основного видения, но продукты находятся на совершенно разных этапах своего жизненного цикла и имеют разные приятные места. Mesos - это ядро ​​распределенных систем, которое объединяет множество разных машин в логический компьютер. Он был рожден для мира, где у вас много физических ресурсов для создания большого статического вычислительного кластера. Самое замечательное в этом то, что многие современные масштабируемые приложения для обработки данных хорошо работают на Mesos (Hadoop, Kafka, Spark), и это приятно, потому что вы можете запускать их все в одном базовом пуле ресурсов вместе с вашими пакетными приложениями нового поколения. , Он несколько тяжелее, чем проект Kubernetes, но его становится все легче и легче благодаря работе таких людей, как Mesosphere.

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

Когда меня спрашивают, я склонен говорить:

  1. Kubernetes - отличное место для старта, если вы новичок в мире кластеризации; это самый быстрый, простой и легкий способ запустить шины и начать экспериментировать с кластерно-ориентированной разработкой. Он предлагает очень высокий уровень мобильности, поскольку поддерживается многими различными провайдерами (Microsoft, IBM, Red Hat, CoreO, MesoSphere, VMWare и т. Д.).

  2. Если у вас есть существующие рабочие нагрузки (Hadoop, Spark, Kafka и т. Д.), Mesos предоставит вам среду, которая позволит вам чередовать эти рабочие нагрузки друг с другом и смешивать некоторые новые элементы, включая приложения Kubernetes.

  3. Mesos дает вам запасной клапан, если вам нужны возможности, которые еще не реализованы сообществом в рамках Kubernetes.

Крейг Маклуки
источник
4
Отличный обзор. Две короткие мысли: 1) Я считаю, что Kubernetes теперь бета, а не альфа? 2) Добавить информацию о марафоне?
вязать
57
Подводя итог (для быстрого чтения - надеюсь, я правильно понял): kubernetes - это менеджер кластеров для контейнеров (только?), А mesos - это ядро ​​распределенной системы, которое сделает ваш кластер похожим на одну гигантскую компьютерную систему для всех поддерживаемых сред. и приложения, созданные для запуска на мезо. Все же kubernetes - одна (среди других) структура, которая может работать на мезо. Таким образом, объединяя оба, вы получаете кластер, который не является кластером, и менеджер кластера, у которого нет кластера для управления. Великий новый мир :-) (J / K есть много преимуществ, которые вы получаете от этого, так как kub. Больше, чем clst. Phys. Res.)
masi
7
Вот что говорит об этом Месосфера на старте Kubernetes 1.0 Launch: youtube.com/… - отказ от ответственности: это я.
воздух
68

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

Для развертывания приложений поверх Mesos можно использовать Marathon или Kubernetes для Mesos.

Marathon - это кластерная система инициализации и управления для запуска сервисов Linux в cgroups и контейнерах Docker. Марафон имеет ряд различных функций развертывания канареек и является очень зрелым проектом.

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

Стек технологий Mesos и Mesosphere обеспечивает облачную среду для запуска существующих рабочих нагрузок Linux, но также предоставляет собственную среду для создания новых распределенных систем.

Mesos - это ядро ​​распределенных систем с полным API для программирования непосредственно в центре обработки данных. Он абстрагирует базовое оборудование (например, «голое железо» или виртуальные машины) и просто раскрывает ресурсы. Он содержит примитивы для написания распределенных приложений (например, Spark изначально был приложением Mesos, Chronos и т. Д.), Таких как передача сообщений, выполнение задач и т. Д. Таким образом, стали возможны совершенно новые приложения. Apache Spark - один из примеров новой (в Mesos jargon) фреймворка, который был изначально создан для Mesos. Это позволило действительно быстро разрабатывать - разработчикам Spark не нужно было беспокоиться о сети для распределения задач между узлами, поскольку это основной примитив в Mesos.

Насколько мне известно, Kubernetes сегодня не используется внутри Google в производственных развертываниях. Для производства Google использует Omega / Borg, который намного больше похож на модель Mesos / Marathon. Однако самое замечательное использование Mesos в качестве основы заключается в том, что и Kubernetes, и Marathon могут работать поверх него.

Больше ресурсов о марафоне:

https://mesosphere.github.io/marathon/

Видео: https://www.youtube.com/watch?v=hZNGST2vIds

mesospherian
источник
37

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

из файла readme of kubernetes-mesos

Геродот
источник
18

Mesos и Kubernetes могут использоваться для управления кластером машин и абстрагирования оборудования.

Mesos по своей природе не предоставляет вам планировщик (чтобы решить, где и когда запускать процессы и что делать в случае сбоя процесса), вы можете использовать что-то вроде Marathon или Chronos или написать свой собственный.

Kubernetes будет выполнять планирование для вас из коробки, и может быть использован в качестве планировщика для Mesos (пожалуйста, исправьте меня, если я не прав здесь!), Где вы можете использовать их вместе. В Mesos может быть несколько планировщиков, совместно использующих один и тот же кластер, поэтому теоретически вы можете запускать kubernetes и chronos вместе на одном оборудовании.

Супер просто: если вы хотите контролировать, как распределяются ваши контейнеры, выберите Mesos, иначе Kubernetes рулит.

user2851943
источник
1
Этот ответ является неточным и запутанным. Нет простого способа запустить Mesos в Kubernetes - и это на самом деле инверсия архитектуры. Поскольку Kubernetes имеет меньшую общую направленность, чем Mesos, имеет смысл использовать его поверх Mesos.
ssk2
1
Да, я имел в виду kubernetes, работающий поверх Mesos. Kubernetes предоставляет логику планирования для среды mesos, а mesos заботится о выполнении задания и т. Д. Извините, если это неясно.
user2851943 26.02.15
2
@air Мне интересно узнать, как бы вы определили планировщик здесь? Сам Mesos, кажется, не обеспечивает какую-либо логику планирования? Все это обрабатывается в Chronos / Marathon / etc? (возможно, я что-то пропустил! :))
user2851943
6
Я думаю, что вижу, к чему вы клоните - Mesos - это фреймворк, позволяющий подключать планировщики. Меня смутила формулировка, предполагающая, что Mesos пропустил что-то важное («Mesos не предоставляет вам»), когда это дизайн. Я удалил свое понижение.
эфир
5
Этот ответ точен. Mesos сосредотачивается на управлении ресурсами, и это разъединяет планирование, позволяя подключаемые платформы. Хорошим примером является то, что Netflix сделал, написав структуру планирования: Fenzo techblog.netflix.com/2015/08/…
Камило Креспо,
5

Мне нравится это короткое видео здесь мезо учебный материал

с кластерами без метала вам потребуется порождать стеки, такие как HDFS, SPARK, MR и т. д., поэтому, если вы запускаете связанные с ними задачи, используя только управление кластерами без метала, у вас будет много холодного запуска.

с помощью mesos вы можете установить эти сервисы поверх «голых металлов» и избежать времени запуска этих базовых сервисов. Это то, что mesos делает хорошо. и может быть использован kubernetes, строящим сверху этого.

Кованые изделия
источник
3

«Я понимаю, что оба являются программным обеспечением для управления кластерами серверов».

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

С другой стороны, Mesos приближается к «управлению кластерами» в том смысле, что он может контролировать, где и где работает, а не только с точки зрения планирования контейнеров. Mesos также управляет автономным программным обеспечением, работающим на серверах кластера. Несмотря на то, что он в основном используется в качестве альтернативы Kubernetes, Mesos может легко работать с Kubernetes, поскольку во многих областях функциональные возможности перекрываются, Mesos может делать больше (но с перекрывающимися частями Kubernetes имеет тенденцию быть лучше).

Андрей Даскалу
источник