Visitors have accessed this post 1811 times.

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

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

Visitors have accessed this post 1811 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)
Введено символов из возможных
Не отвечать

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

Преимущества и недостатки DevOps Engineer
array(1) { [0]=> object(WP_Term)#11797 (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
Как мы помним, методология DevOps...

2
0
28 августа 2020
Основы DevOps
array(1) { [0]=> object(WP_Term)#10987 (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 в 2009 (хотя, по некоторым источникам, это все-таки было в 2008) в корне поменяло процесс взаимодействия между отделами разработки и эксплуатации. До этого момента это были два совершенно разные подразделения со своими целями, задачами и KPI. Как следствие, они не слишком вникали в деятельность друга и часто возникала абсолютно...

4
0
25 сентября 2020
Sandboxing Nginx
array(1) { [0]=> object(WP_Term)#976 (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

Автор - Юрий Изоркин

В конце 2018 года мне на глаза попался пул-реквест, который позволял запускать сервис nginx от непривилегированного пользователя - https://github.com/NixOS/nixpkgs/pull/51551 - nginx: do not run anything as root. Это повышает защиту web-сервера nginx.

При каждом запуске сервиса nginx происходит проверка конфигурации на...

2
0
13 ноября 2020