Системы оркестрации: есть ли альтернатива Kubernetes?
Микросервисная архитектура становится стандартом для разработки приложений. Растет спрос на системы оркестрации, которые позволяют управлять множеством контейнеров. Чем отличаются наиболее популярные решения, для каких задач они подходят и почему 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 – теория цифрового взрыва в банкинге
От теста до запуска – в рекордные сроки: что ожидают ИТ-специалисты от рынка тестирования?
Создание оптимальной ИТ-инфраструктуры для онлайн-ритейлеров