Docker Swarm, Kubernetes или Imagenarium

citrix    /    Онлайн

Пресс-служба ОЛЛИ ИТ перевела для вас статью Shaun OMeara, Технического директора компании Mirantis, предоставляющей технологические решения, комплектации, обучение и поддержку, необходимые компаниям для построения облаков на базе технологий OpenStack в промышленных масштабах. Статья посвящена кейсам, в которых технология Docker Swarm предпочтительнее Kubernetes. Мы дополнили статью рассказом об отечественной Post-DevOps–платформе Imagenarium, содержащей Swarm в своем ядре.

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

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

Команда Mirantis хорошо понимает, почему люди предпочитают использовать Swarm. Более 100 клиентов Mirantis, в том числе GlaxoSmithKline, MetLife, Royal Bank of Canada и S&P Global, используют Swarm для производственных рабочих нагрузок. Это более 10 000 узлов, распределенных примерно по 1000 кластерам, поддерживающим более 100 000 контейнеров, управляемых Swarm.

Ежегодное исследование ПО, проведенное JetBrains, показало, что 10% опрошенных организаций управляют своими контейнерами с помощью Swarm, и это число остается стабильным в течение последних нескольких лет.

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

Kubernetes vs. Swarm

Во многих отношениях Swarm похож на Kubernetes, – оба организуют контейнерные приложения. И тот, и другой позволяют создать кластер из нескольких узлов, на которых могут работать контейнерные приложения, и оба позволяют декларативно определять, как эти приложения должны работать.

Однако между двумя системами есть и различия, благодаря которым многие предпочитают Swarm, а не Kubernetes.

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

Обе системы основаны на языке разметки YAML, но там, где Kubernetes использует концепцию объектов (Pods, Services, Deployments и т. д.), которые создаются независимо друг от друга и затем объединяются для создания общего приложения, Swarm определяет приложения более целостно, определяет все одновременно, так, чтобы это было намного читабельнее (и понятнее) для человека.

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

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

В плане безопасности приложений со Swarm тоже немного проще, чем с Kubernetes. Например, Swarm включает сеть TLS из коробки, и все управление доступом осуществляется через нее. Его легко использовать, однако вы не получаете полного контроля, который дает вам Kubernetes с помощью RBAC, контроллеров доступа, политик и т. д.

Масштабируемость

В части масштабирования инфраструктуры Kubernetes и Swarm сопоставимы — максимум 5000 узлов для K8s против 4700 для Swarm.  В части масштабирования приложений Swarm может упростить задачу, так как не включает авто масштабирование (как в Kubernetes), но при этом включает балансировку нагрузки с помощью DNS (Kubernetes нужен внешний компонент, такой как NGINX Ingress).

Экосистема

Безусловно, для Kubernetes создано намного больше приложений и компонентов, чем для Swarm. Возвращаясь к проблеме балансировки нагрузки, например, стоит упомянуть, что сервисные сетки типа Istio обычно создаются для Kubernetes, а не для Swarm. Кроме того, Kubernetes может работать с любой средой выполнения кода контейнера, совместимой с интерфейсом, где Swarm использует только среду Docker Engine. Тем не менее, среднестатистический разработчик не думает о выборе среды. Опять же, простота важнее дополнительных функций.

Почему Swarm так востребован именно сейчас

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

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

К тому же Swarm может стать ступенью к инструментам, облегчающим разработку Kubernetes, таким как Lagoon, Knative и т. д., или к обучению Kubernetes, облегчая команде разработчиков более сложную оркестровку контейнеров.

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

Docker Swarm и Imagenarium

Imagenarium — контейнерная платформа для развертывания и разработки приложений от Российской компании Kairos Digital, предоставляющая «из коробки» как традиционные для контейнерной платформы сервисы, так и дополнительные сервисы, не доступные в традиционных контейнерных платформах и требующие отдельной установки, интеграции и настройки сторонних компонентов. Оркестрация в Imagenarium реализована на основе Docker Swarm, но значительно расширена дополнительными возможностями, отсутствующими в классическом Docker Swarm.

Для обеспечения эффективной работы приложений и минимизации затрат на их обслуживание в Imagenarium «из коробки» реализована следующая функциональность:

– Удобный GUI администратора;

– Отказоустойчивость «из коробки»;

– Развитый RestAPI;

– Поддержка работы с хранилищами;

– Маркетплейс приложений;

– Шаблоны для развертывания приложений, в том числе группового развертывания;

– Возможность запуска контейнера без передачи управления прикладному процессу;

– Интеграция с внешними идентити провайдерами;

– Балансировка трафика;

– Система мониторинга;

– и другие возможности.

Imagenarium, в отличие от решений на базе Kubernetes, не требует дополнительных служебных серверов для развертывания, он развертывается в виде докер контейнера внутри управляемого кластера. Дополнительными преимуществами Imagenarium являются его реализация в парадигме Infrastructure-as-Code и интеграция с любыми git репозиториями, что позволяет существенно сократить сроки развертывания приложений и затраты, связанные с управлением инфраструктурой, необходимой для развертывания.

Узнайте больше об Imagenarium: Imagenarium@olly.ru