Системы оркестрации: есть ли альтернатива Kubernetes?
![Системы оркестрации: есть ли альтернатива Kubernetes?](/upload/iblock/e92/v2izcqbmp94u4w6eq8jxyyqb71el9za2.jpg)
Микросервисная архитектура становится стандартом для разработки приложений. Растет спрос на системы оркестрации, которые позволяют управлять множеством контейнеров. Чем отличаются наиболее популярные решения, для каких задач они подходят и почему Kubernetes называют наиболее перспективной технологией, рассказывает Дмитрий Лазаренко, директор по продукту Mail.ru Cloud Solutions.
Мировой рынок коммерческих контейнеров будет ежегодно увеличиваться в среднем на 30% до 2023 года, прогнозирует IHS Markit. К этому времени его объем превысит $1,6 млрд. В Gartner считают, что выручка от продаж программного обеспечения и услуг по управлению контейнерами в 2020-2024 годах увеличится с $465,8 млн до $944 млн.
Востребованность решений по управлению контейнерами неудивительна. Компаниям необходимо быстро реагировать на меняющиеся рыночные условия: трансформировать бизнес-процессы, запускать онлайн-сервисы, организовывать удаленное взаимодействие с сотрудниками и партнерами.
На первый план выходит скорость вывода на рынок новых ИТ-продуктов, а также их дальнейшее развитие. От монолитных приложений рынок движется в сторону микросервисной архитектуры. Она позволяет компаниям делать конечный продукт более гибким: легче добавлять новые функции и масштабировать его.
Приложения могут состоять из тысяч микросервисов. Для управления ими нужны оркестраторы. Они представляют собой программное обеспечение, при помощи которого пользователь может распределять контейнеры по узлам кластера (балансировать нагрузку) и координировать их взаимодействие.
Многие из них имеют открытый программный код, что позволяет работать с обширной экосистемой без лицензионных ограничений. Также оркестраторы позволяют проводить постоянный мониторинг состояния контейнерных приложений.
Наиболее распространенные оркестраторы — Kubernetes, Apache Mesos, Docker Swarm, Nomad. Разберемся, чем они отличаются и для каких задач подходят.
Docker Swarm
Одни из самых распространенных софтверных решений для управления приложениями в контейнерах — инструменты Docker. Среди них есть стандартный оркестратор для микросервисов Docker Swarm, доступный “из коробки”. Вместо прямого использования контейнеров в Docker Swarm используют сервисы (Docker Swarm Service).
В данном контексте “сервис” представляет собой уровень дополнительной абстракции над контейнерами. Чтобы обеспечить отказоустойчивость кластера сервисам указывают нужное количество нод, на них автоматически будут запущены контейнеры.
Например, если по какой-то причине один из контейнеров “отвалится”, то Docker Swarm создаст новую реплику (контейнер) на другом хосте. Ноды в Docker складываются в кластеры (Docker Swarm Cluster), которые состоят из нод двух типов.
Управляющая нода (Manager) принимает запросы и распределяет задачи между всеми нодами в кластере. Таких нод в каждом отдельном кластере всегда несколько, с обязательным выделением “ноды-лидера”, которая управляет всем кластером. Остальные ноды - рабочие (Worker) или подчиненные, используемые только для выполнения поставленных задач.
Решение отличается оперативностью развертывания контейнеров: создать кластер в Docker Swarm можно буквально за минуту. Также Docker Swarm обладает достаточной производительностью и отказоустойчивостью. Но его функционал ограничен Docker API. Ему доступно только то, что позволяют делать возможности Docker.
Для управления оркестратор использует REST API, совместимый с Docker API, в результате чего абсолютно все инструменты, совместимые с Docker API, могут работать с кластером Docker Swarm, как с обычным хостом. Это удобно. Однако если API не поддерживает какую-либо возможность, решить проблему непросто, т.к. Docker Swarm не предусматривает какие-либо возможности расширения простому разработчику, не связанному с компанией Docker Inc.
Kubernetes
Несмотря на свою молодость (первая версия появилась в 2015 году), Kubernetes (K8s) обладает широкой функциональностью и позволяет строить сложные распределенные системы. С помощью этого оркестратора компании автоматизируют разработку и обновление приложений, существенно сокращая время вывода продуктов на рынок.
K8s способен выполнять те задачи, с которыми не справляются многие другие оркестраторы. Например, у него есть функция автомасштабирования как приложений внутри кластера, так и самого кластера. K8s сам подстраивает свою мощность под имеющуюся нагрузку. В кластере автоматически увеличивается или уменьшается количество нод (серверов), либо в рабочих нодах выделяется столько ресурсов, сколько необходимо.
Оркестратор отличается большим числом доступных настроек и сценариев для работы с контейнерными приложениями в различных облачных средах, а также поддерживает различные способы расширения, т.к. является решением с открытым исходным кодом и предусматривает из коробки различные механизмы для изменения поведения по умолчанию. Kubernetes применяется в организациях с более сложными архитектурами ИТ-решений: часто используется в производственных средах передовыми компаниями, бизнес-модель которых строится на предоставлении цифровых услуг в интернете.
При этом Kubernetes — довольно “дорогая”, с точки зрения временных инвестиций, и сложная технология. Нужны специалисты, которые разбираются в ней, следят за ее развитием и новыми возможностями. Облачное развертывание Kubernetes-as-a-Service значительно упрощает настройку и использование инструмента.
Например, такое решение есть в Mail.Ru Cloud Solutions. Kubernetes-as-a-Service от MCS единственный в России имеет сертификацию CNCF. Она подтверждает, что оркестратор отвечает всем функциональным требованиям сообщества Cloud Native Computing Foundation и совместим со стандартным Kubernetes API.
Решение “из коробки” включает в себя автоматическое масштабирование кластера до сотен нод с использованием Kubernetes Cluster Autoscaler. Инструмент также позволяет задействовать выделенные балансировщики нагрузки для распределения трафика внутри системы, поддерживает интегрированные Persistent Volumes на базе блочного хранилища CEPH, виртуального файлового хранилища или SSD/NVME-дисков, подключенных по iSCSI к каждому вычислительному серверу. Предусмотрен собственный Terraform-провайдер для работы с инфраструктурой как кодом.
Apache Mesos
Оркестратор Apache Mesos чуть проще в развертывании, чем K8s, но сложнее в администрировании. Он имеет высокие показатели по производительности и отказоустойчивости.
По своей сути Apache Mesos является диспетчером, менеджером кластера. Его архитектура состоит из мастера (Mesos Master) и агентов (Mesos Agent). Фреймворки (Mesos Frameworks) запускают на агентах конкретные рабочие задачи. Фреймворк состоит из планировщика (Scheduler) и исполнителя (Executor), который запускается на нодах агентов. В одном кластере Mesos может работать несколько фреймворков для разных типов задач.
Изначально Mesos создавался для работы с задачами по работе с большими данными, отсюда его высокая производительность, которая опережает Kubernetes.
Чемпион по масштабируемости: поддерживает развертывание и управление десятками тысяч нод (у K8s “потолок” - 5 000 нод). В тестовой платформе с использованием Mesosphere DC/OS удалось зафиксировать показатель 50 000 активных нод.
Также функциональность оркестратора шире, чем у конкурентов - он может обрабатывать различные типы рабочих нагрузок, в том числе неконтейнерные. Из минусов: менее удобные шаблоны конфигураций, отставание по сетевым возможностям и автомасштабированию.
Nomad
Nomad — оркестратор, который также позволяет управлять контейнерами и неконтейнерными приложениями. Построен на клиент-серверной архитектуре, серверы могут выбирать лидера для обеспечения высокой доступности ресурсов.
Эта простота позволяет поддерживать производительность на более высоком, чем у того же K8s уровне, а также масштабируемость до 10 000 нод. Рабочую нагрузку в Nomad определяет работа (Job), описывающая желаемое состояние кластера и состоящая из одной или нескольких групп задач (Task). Nomad должен поддерживать соответствие между желаемым и фактическим состоянием кластера.
Оркестратор очень прост в развертывании, однако настроить кластер в Nomad под нужные требования уже сложнее. Это делается с помощью внешних инструментов, таких как Consul, Vault и др.
При этом у этого оркестратора нет Autodiscovery-инструментов для обнаружения новых сервисов на основе DNS, отсутствует шаблонизация и скромнее сетевые возможности.
Облака упрощают использование технологий
Аналитики Gartner прогнозируют, что к 2022 году 75% организаций перейдут на Kubernetes. Столь высокий спрос на него объясняется наиболее развитым функционалом, а также наличием более простой и удобной сервисной модели использования технологии — Managed Kubernetes.
K8s сложно самостоятельно настраивать, развертывать и поддерживать. Но Kubernetes как облачный сервис (KaaS) решает эти проблемы при сохранении всех преимуществ оркестратора. K8s можно развернуть из облака и настроить за 10 минут. Компаниям не нужно администрировать кластер — этим занимается облачный провайдер. С помощью автомасштабирования можно увеличивать мощности или "отдавать" их обратно в облако. Пользователь оплачивает только те ресурсы, которые фактически использовал.
Для небольших команд или единичных проектов использование Kubernetes экономически нецелесообразно: лучше выбрать более простой оркестратор. K8s больше подходит для компаний, которые ведут постоянную разработку ИТ-продуктов. Например, компания "Кометрика", которая разрабатывает ИТ-решения для умного города и цифрового бизнеса, ускорила запуск новых продуктов примерно в семь раз. В таких кейсах использование Kubernetes не только оправданно, но и необходимо.
Читать еще:Big Bank – теория цифрового взрыва в банкинге
От теста до запуска – в рекордные сроки: что ожидают ИТ-специалисты от рынка тестирования?
Создание оптимальной ИТ-инфраструктуры для онлайн-ритейлеров