Сравнительный анализ систем управления кластерами с открытым исходным кодом

Разработчики компании DST Global предлагают сравнить Kubernetes и Apache Mesos, две системы управления кластерами с разными сильными и слабыми сторонами, чтобы помочь вам принять решение в соответствии с вашими потребностями.

Системы управления кластерами — это критически важные программные решения, которые позволяют эффективно распределять и использовать вычислительные ресурсы в сети взаимосвязанных компьютеров. Без сомнения, они играют жизненно важную роль в современных вычислениях, обеспечивая масштабируемость , высокую доступность и эффективное управление ресурсами, что делает их незаменимыми для запуска сложных приложений, управления центрами обработки данных и дальнейшего увеличения мощности распределенных вычислений. Как сообщает National Grid ESO , центры обработки данных, несмотря на все достижения, по-прежнему составляют значительный 1% мирового потребления электроэнергии, и именно здесь системы управления кластерами могут сыграть решающую роль в повышении энергоэффективности.

Прежде чем мы углубимся в детали, важно отметить, что эта статья не посвящена объявлению одной системы «лучшим» выбором. Вместо этого мы начинаем сравнивать и противопоставлять две известные системы управления кластерами с открытым исходным кодом, Kubernetes и Apache Mesos, поскольку у них совершенно разные подходы. Мы прольем свет на их уникальные особенности, сильные и слабые стороны, помогая принимать обоснованные решения, исходя из конкретных потребностей.

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

Почему именно они? Причина сравнения

По мнению разработчиков DST Global сравнение Kubernetes и Mesos — стратегический выбор, обусловленный их известностью в мире систем управления кластерами. Эти два решения с открытым исходным кодом привлекли значительное внимание, поскольку могут похвастаться большими сообществами пользователей, разнообразными вариантами использования и надежными экосистемами инструментов и расширений.

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

Справочная информация: Kubernetes

Kubernetes родился в Google. Она развилась из их внутренней системы Боргов и ее потомка, экспериментального менеджера кластера Омеги . Google открыл Kubernetes с открытым исходным кодом в 2014 году, и с тех пор он превратился в сокрушительную силу с процветающим сообществом разработчиков открытого исходного кода. Как сообщается в дашборде таблицы Kubernetes Companies , среди ее вкладчиков такие именитые технологические компании, как сама Google (128 вкладов за последние полгода), Red Hat (109), Microsoft (55) и другие.

Ключевые особенности и концепции

Kubernetes можно рассматривать как основную часть, обеспечивающую хранилище и набор API- интерфейсов для построения распределенных систем, дополненных надежным набором встроенных объектов и контроллеров, таких как пакет «в комплекте с батареями». Некоторые из его выдающихся особенностей включают в себя:

Поды : Поды — это наименьшие единицы работы в Kubernetes, группирующие один или несколько контейнеров вместе.

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

Контроллеры репликации : они обеспечивают бесперебойную работу приложений, гарантируя, что у них работает нужное количество копий (реплик).

Балансировка нагрузки : Kubernetes может равномерно распределять трафик по репликам приложений; это гарантирует пользователям удобство работы.

Введение в Apache Mesos

Путешествие Apache Mesos началось еще в Калифорнийском университете в Беркли, и в 2010 году он был открыт в открытом доступе. Первоначально это был исследовательский проект, проводимый аспирантом Бенджамином Хиндманом. В дальнейшем Хиндман много сотрудничал с Джоном Уилксом, одним из авторов упомянутой выше Omega: они активно сотрудничали при разработке Apache Mesos и Omega, хотя их подходы в конечном итоге пошли разными путями в области управления кластерами. Теперь Apache Mesos — это надежная платформа, используемая такими компаниями, как Twitter (теперь X) и Airbnb.

Ключевые особенности и концепции

Mesos — это не только контейнеры, но и управление ресурсами, такими как ЦП и память, во всем центре обработки данных. Как указано в официальном документе его создателей, Mesos распределяет ресурсы более детальным образом, позволяя платформам достигать близости данных за счет поочередного чтения данных, хранящихся на каждой машине. Некоторые из его особенностей:

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

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

- Отказоустойчивость : Mesos известен своей отказоустойчивостью, управляя сбоями оборудования с помощью Zookeeper для отказоустойчивой координации и используя методы сегментирования, которые синхронизируются с хост-агентами после сбоя ведущего устройства.

- Мультитенантность : он может запускать различные рабочие нагрузки в одном кластере без перерывов.

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

Сравнение

Архитектура и дизайн

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

Масштабируемость и производительность

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

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

Экосистема и сообщество

У Kubernetes огромное и активное сообщество. Экосистема обширна, в ней есть такие инструменты, как Helm для упаковки приложений, Prometheus для мониторинга и Grafana для визуализации. Помимо этого, Kubernetes получил широкую поддержку со стороны крупных облачных провайдеров, таких как GKE Google Cloud, EKS Amazon и AKS Microsoft Azure.

Сообщество Mesos меньше, но у него все еще есть своя доля фреймворков и библиотек. Apache Spark и Hadoop — это известные платформы, которые называют Mesos своим домом. В то время как Kubernetes обеспечивает более широкую поддержку управляемых сервисов, Mesos также получает поддержку от различных поставщиков облачных услуг, включая Microsoft и Oracle, которые объявили о поддержке этого сервиса на своих облачных платформах Azure и Oracle Container Cloud Service соответственно.

Простота использования и возможность обучения

Kubernetes значительно продвинулся в удобстве использования, однако может представлять сложности для тех, кто не знаком с его экосистемой. Это требует некоторого изучения, особенно в отношении файлов YAML и их особой терминологии.

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

Отказоустойчивость и высокая доступность

Kubernetes имеет надежную отказоустойчивость, поскольку он построен на основе etcd , распределенного и надежного хранилища значений ключей. Если модуль выходит из строя, Kubernetes воскрешает его.

Mesos обрабатывает сбои аналогичным образом, поскольку он полагается на Zookeeper с теми же сценариями использования, что и Kubernetes, но отказоустойчивость часто зависит от используемых вами платформ.

Безопасность

Kubernetes предлагает надежные функции безопасности с контролем доступа на основе ролей , сетевыми политиками и политиками безопасности модулей.

В Mesos предусмотрены такие меры безопасности, как изоляция инфраструктуры и аутентификация. Это гарантирует, что ваши платформы не смогут попирать друг друга.

Каким может быть выбор?

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

Выбирайте Kubernetes, если самое важное:

Оркестровка контейнеров

Сообщество и экосистема

Простота использования

Стандартизация

Выбирайте Apache Mesos, если вы цените:

Гибкость ресурсов

Мульти аренды

Расширенные варианты использования

Кастомизация

Унаследованная интеграция

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

Сравнительный анализ систем управления кластерами с открытым исходным кодом
Получить консультацию у специалистов DST
Напишите нам прямо сейчас, наши специалисты расскажут об услугах и ответят на все ваши вопросы.
Комментарии
RSS
11:40
+4
Как по мне Kubernetes идеален в качестве платформы корпоративного уровня, способной запускать тысячи контейнеров в облаке и управлять ими.

Преимущества Kubernetes:
— Самодостаточный инструмент оркестровки, в который встроено множество сервисов. Kubernetes предоставляет все функции, необходимые для запуска приложений на основе контейнеров, включая: управление кластером, планирование, обнаружение служб, мониторинг, управление безопасностью и многое другое.
— Поддерживается фондом CNCF (Cloud Native Computing Foundation). У Kubernetes самое впечатляющее по числу участников сообщество среди всех оркестраторов, что обеспечивает богатый инструментарий и большое число готовых решений.
— Это бесплатный инструмент с открытым исходным кодом, который работает в любой ОС.
Можно взять k3s или k0s, добавить kubevirt и это в огромном подавляющем числе упростит и первоначальную настройку и расширит рабочие нагрузки. А в случае роста узлов и подов, можно делать мультикластерные решения и это в любом случае потребует затрат специалистов для обслуживания инфраструктуры. Сейчас нет никаких преимуществ в новых проектах использовать, что-то отличное от k8s.
11:43
+2
Знающие люди, подскажите — чем k8s лучше чем terraform + aws (забудем про eke) с точки зрения администрирования и поддержки? И там и там кластер описывается конфигом, есть автомасштабирование и виртуальные сети.
11:44
+1
Ничем.

Отсутствием привязки к AWS, большим опенсорсным комьюнити и, как следствие, большим количеством всевозможных дополнительных компонентов. Кроме того, K8s реализует паттерн замкнутого контура управления (ЗКУ). Это позволяет приводить ваше приложение к целевому состоянию, пускай даже на это уйдет несколько дней. В случае с Terraform вы ограничены клиент-серверным взаимодействием и небольшим количеством попыток установить целевое состояние для ресурса
11:48
+3
Я бы назвал основным недостатком к8с это необходимость обращаться к услугам облачных провайдеров для работы с ним. Так как поднять и главное обслуживать его своими силами просто немыслимо. За что его и любят и всячески продвигают облачные провайдеры. Как следствие второй недостаток. То что каждый облачный провайдер добавляет чуточку своего функционала. Что приводит к несовместимости к8s при миграции с одного облака в другое. Не думаю чтотв этом нет некого умысла.
11:48
+2
Почему? В моей практике кубер просто работает и никого ничем не парит. Как по мне, это больше миф, который распространился как вирус, а облачные провайдеры подхватили его и начали толкать managed решения. То, что в нем много компонентов, не является прямым следствием сложности работы с ним. Как правило, эти компоненты живут своей жизнью и никого не трогают.
На протяжении всей моей карьеры я работал со многими компаниями, которым требовался инструмент оркестрации в течение ограниченного времени в день. Например, одному из моих первых клиентов-фрилансеров требовалось запускать экземпляр Airflow всего 2–3 часа в день, в результате чего все остальное время экземпляр простаивал и тратил деньги.

Поскольку это была небольшая компания, клиент спросил, могу ли я вмешаться. Инфраструктура размещалась в Google Cloud, с которым я был знаком.

После быстрого поиска в Интернете я нашел официальное руководство, которое точно соответствовало моим потребностям. Я подсчитал, что задача займет около 20 часов. Вот схема конструкции.

Здесь мне придется остановиться, чтобы объяснить, почему часов было именно 20:

— Мне пришлось перенести код из App Engine (не знаю, почему Airflow изначально был развернут в App Engine).
— В настоящее время для таких случаев я использую официальный Airflow Docker Compose, но раньше я устанавливал необработанный Airflow в режиме LocalExecutor, и база данных работала в том же экземпляре (я знаю, что это плохо, но вы не можете винить меня, если вы никогда не занимался шиткодом).
— Сами даги пришлось слегка рефакторить, чтобы приспособить их к новому графику, и, как и следовало ожидать, там было много некачественного кода, который я тщательно просмотрел.

Короче говоря, я выжал за 18 часов, и результат был следующий:
Основным недостатком решения было то, что выполнение конвейера могло занять гораздо больше трех часов, о чем я тогда не знал. Были случаи, когда конвейеры должны были занимать 5 часов или даже 12 часов, так что же нам делать?

Довольно просто: если мы внимательно посмотрим на дизайн, то увидим, что в Cloud Scheduler есть задание, которое отправляет сообщение в тему PubSub, что запускает функцию Cloud, которая останавливает экземпляр Airflow. Так почему мы не можем просто отключить его и отправить сообщение в тему через Airflow? Это просто, всего несколько строк кода с использованием PubSubPublishMessageOperator

check_that_still_latest >> PubSubPublishMessageOperator(

   task_id="send_pub_sub_message",

   project_id=conf.GCP_PROJECT_ID,

   topic=conf.TOPIC_TO_SHUTDOWN_AIRFLOW_INSTANCE,

   messages=[conf.AIRFLOW_SHUTDOWN_MESSAGE],

   gcp_conn_id=conf.GCP_CONN_ID,

   trigger_rule=TriggerRule.NONE_SKIPPED,

   execution_timeout=timedelta(minutes=5)

)
Я уже упоминал установку триггера_rule и предыдущего check_that_still_latest?

Да, после нескольких проблем с конвейером я понял две вещи:

Поскольку время от времени конвейер может занимать более 24 часов, нам следует подумать, следует ли пропустить завершение экземпляра.
Даже если предыдущие задачи не удастся выполнить, мы все равно должны завершить экземпляр.

Поскольку мне не нужно проверять это на регулярной основе, я использовал Google Cloud Monitoring для автоматического мониторинга, чтобы избежать ненужных взаимодействий. При обнаружении проблемы с конвейером Airflow в PubSub отправляется сообщение, что позволяет службе мониторинга GC поднять предупреждение и отправить мне и моему клиенту электронное письмо со всей необходимой информацией. Клиент знает, что я буду вносить часы в табели учета рабочего времени и проверять ошибки, но мне не придется тратить время вручную на мониторинг потенциальных ошибок на регулярной основе.

Данное решение доказало свою эффективность после более чем года эксплуатации без изменений. За это время мне пришлось всего дважды перезапустить один конвейер.
Вам может быть интересно
Традиционные решения для управления API с трудом справляются с распределенной природой Kubernetes. Познакомьтесь с некоторыми решениями от специалистов компании DST Global, для эффективного управления...
Изучите изменяемую инфраструктуру и неизменяемые структуры: узнайте от специалис...
В современной разработке большая часть приложений ...
В этой публикации специалисты из DST Global предст...
Десятилетие совершенства: путь, влияние и будущее ...
В статье подчеркивается важность создания комплекс...
Микросервисы — это тип архитектуры, который ...
Как пользоваться Github? Разработчики компании DST...
Когда дело доходит до разработки программного обес...
Инструменты контейнеризацииКонтейнеризация —...

Новые комментарии

Оптимизация производительности веб-приложений — это не просто задача, а искусств...
Если обучение кампании уже замедлилось, можно прибегнуть к действиям, о которых ...
Всё зависит от объема фида. Например, генерация динамических объявлений может за...

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон