Зачем нужны системы оркестрации?
8
21144
16 октября 2020 9:04
16/10/2020
Visitors have accessed this post 21144 times.
Автор — Андрей Трошин
Понятие оркестрации
Оркестрация или оркестровка — если обратиться к wiki — это автоматическое размещение, координация и управление сложными компьютерными системами и службами. Давайте попробуем упростить и провести аналогию с обычным музыкальным оркестром. Оркестр — это такая штука, которая позволяет сыграть грандиозное музыкальное произведение, недоступное, если музыканты станут его исполнять по отдельности. Надеюсь, музыканты меня простят, если ошибся. Но мы про IT, так что давайте углубляться в тему.
Оркестрация контейнеров
Технология контейнеризации в IT на сегодняшний день скорее правило, чем исключение. Контейнеры используются как в инфраструктуре, так и в процессах разработки ПО. Плюсы их очевидны, а минусы незначительны (пока не используются в продакшене — шутка :). И когда в компании число контейнеров или микросервисов переваливает за > много тысяч, встает вопрос, как исполнить грандиозное произведение со всем этим добром. В таком случае и появляется необходимость в системах оркестрации.
Вспомним типичный кейс. Есть некая компания, которая занимается разработкой ПО и у нее имеется процесс CI/CD, например, на Docker + GitLab. Разработчики пишут код, упаковывают его в образы Docker, дальше сохраняют в локальном registry, на этом этап CI (Continuous Integration) обычно заканчивается.
Далее — этап CD (Continuous Deployment). Для него необходима некая среда запуска контейнеров для тестирования. Пока компания маленькая, число релизов и их частота небольшие, процесс работает. Выделяется виртуальная машина, на ней Docker и все ОК. Но компания, а с ней и частота релизов увеличивается. Число виртуальных машин растет, и если это хозяйство не привести в порядок, будет бардачок (не тот, что в автомобиле, а от слова бардак). Этот бардак и приводят в порядок системами оркестрации контейнеров.
Основные игроки на рынке
Задачи оркестрации решают такие продукты, как Kubernetes, Docker Swarm, Apache Mesos — это не единственные продукты на рынке. Также есть системы оркестрации контейнеров Nomad, Amazon EC2 Container Service, Microsoft Azure Container Service, однако они менее популярны. Каждый продукт имеет свои особенности. По большому счету, они все решают две основные задачи:
- Динамическое распределение контейнеров по узлам кластера
- Стандарт описания приложения, например, yaml, docker compose и другое
По остальным критериям — дело вкуса и ресурсов на обслуживание.
Система оркестрации Kubernetes
Универсальный солдат, появился в результате наработок Google. В 2014 г. Google открыла код Kubernetes и стала распространять систему под лицензией Apache 2.0. В результате началось быстрое развитие системы сообществом. На данный момент — это стабильный продукт, который одинаково хорошо чувствует себя как в небольших проектах, так и в великом и ужасном Enterprise сегменте.
Система орекстрации Docker Swarm
Компания Docker одна из первых предложила реализацию контейнеров и управление ими. Собственно Kubernetes внутри себя обычно использует Docker как среду исполнения контейнеров (container runtimes). Docker swarm позволяет объединять Docker хосты в общий виртуальный хост. Обычно его используют в небольших проектах. Продукт на данный момент активно развивается.
Apache Mesos
Apache Mesos — это централизованная отказоустойчивая система для управления кластером. Объединяет в группы отдельные узлы, согласно требованиям, а также обеспечивает их изоляцию от остальных IT-ресурсов.
Это разработка университета Беркли, как продукт вышла на рынок в 2009г. Apache Mesos имеет нестандартный подход к своей архитектуре. Он объединяет существующие объекты в единый виртуальный ресурс, формируя крупные кластеры и эффективную систему управления серверной инфраструктурой, где каждому кластеру выделяется свой индивидуальный пул ресурсов. Хорошо подходит для очень больших систем и масштабных проектов.
Оркестрации на примере Kubernetes
Как же Kubernetes наводит порядок в нашей инфраструктуре? Возьмем кейс, описанный выше, и посмотрим, чем нам поможет эта чудо-система:
- С помощью своего планировщика (kube-scheduler) в режиме реального времени распределяет контейнеры по рабочим нодам. Если ресурсы ноды заканчиваются — выполняет миграцию на доступные по ресурсам узлы.
- Позволяет запускать сразу несколько реплик приложения и следить за их доступностью. Тем самым обеспечивает отказоустойчивость приложения внутри кластера.
- Стандартизирует инфраструктуру (Infrastructure as a Code).
- Удобный мониторинг.
Кстати, это далеко не все, на что способен Kubernetes. В этом продукте действительно много хорошего функционала для администрирования контейнеров, с которым стоит познакомиться. Но в рамках обзорной статьи мы этого делать не будем, отложим до следующих, более подробных, материалов.
Итог
Системы оркестрации контейнеров- это логическое продолжение контейнеризации в сфере IT. Все больше компаний идут в эту сторону и подогревают спрос на инструменты управления.
От редакции
Если вам интересно посещать открытые онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN. *Анонсы мероприятий каждую неделю
Практикумы для специалистов по инфраструктуре и разработчиков — https://rebrainme.com.
Наш Youtube-канал — https://www.youtube.com/channel/UC6uIx64IFKMVmj12gKtSgBQ.
Агентство Fevlake, проектируем и поддерживаем IT-инфраструктуры с 2012 года — https://fevlake.com.