Visitors have accessed this post 16993 times.

Зачем нужны системы оркестрации?

8
0
16993
16 октября 2020 9:04
Автор: Rebrain Me
Kubernetes

Visitors have accessed this post 16993 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.

Комментарии (3)
Введено символов из возможных
Не отвечать

Вам также может понравится

NMap — часть 2
array(1) { [0]=> object(WP_Term)#11536 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Часть 2
Автор — Сергей Попов

1 часть статьи
Сканирование портов
Рассказать вам шутку про UDP?
Только она до вас не дойдет.
Изначально Nmap был эффективным средством сканирования портов, и, несмотря на развитие прочего функционала, он им и остается.

Большинство типов сканирования доступны только привилегированным пользователям, потому...

2
0
11 сентября 2020
Как установить и настроить PowerDNS в Debian 10
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Автор - Максим Рязанов

Этот материал носит чисто прикладной характер. Поэтому мы не будем в нем останавливаться на том, чем PowerDNS лучше или хуже других DNS-серверов, и даже не будем сравнивать его с BIND. А сразу перейдем к решению нашей задачи - установка и настройка PowerDNS в Debian 10.
Master
Устанавливаем powerdns authoritative server...

0
0
6 августа 2020
Инструменты DevOps
array(1) { [0]=> object(WP_Term)#11536 (16) { ["term_id"]=> int(7) ["name"]=> string(6) "DevOps" ["slug"]=> string(6) "devops" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(7) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(19) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(7) ["category_count"]=> int(19) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "DevOps" ["category_nicename"]=> string(6) "devops" ["category_parent"]=> int(0) } } DevOps

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

7
0
16 октября 2020