Что такое оркестровка контейнеров: объясняем на пальцах

Оркестровка помогает запускать контейнерные рабочие нагрузки в любом масштабе. Так стратегия гибридного облака становится более гибкой. Вот как кратко объяснить оркестровку контейнеров и платформы оркестрации по типу Kubernetes.

Оркестровка в первую очередь музыкальный термин, но это ещё и важная IT-концепция. Команды, которые запускают или планируют запускать контейнеры в производственной среде, считают, что “важная IT-концепция” — это мягко сказано. 

Оркестровка нужна для контейнерных рабочих нагрузок в любом значительном масштабе. Это один из ключевых облачных инструментов, которыми гибридное облако делают управляемым.

“Оркестровка контейнеров значительно делает управление сложными растущими инфраструктурами проще и даёт легко масштабировать приложение и команду”, — говорит Зак Шойлев, старший Developer Advocate в Netdata.

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

“Контейнерный оркестратор предназначен для контейнеров, как дирижёр для оркестра”, — говорит Дэйв Эгтс, главный технолог Red Hat по Северной Америке. “Дирижёр показывает, сколько скрипок нужно, какие из них играют первую скрипку и насколько громко каждая должна играть. Оркестратор контейнеров показывает, сколько фронтенд-контейнеров веб-сервера нужно, что они обслуживают и сколько ресурсов нужно выделить каждому”.

Дирижёр, размахивающий палочкой — достаточно точная аналогия, и мы ещё более подробно остановимся на этом ниже.

Начнём с некоторых определений оркестровки, которые вы можете использовать.

Что такое оркестровка контейнеров?

“Актуально и для одного компьютера, и для большого ЦОДа: если бы каждый компонент делал только своё дело, возник бы хаос. Linux и другие операционные системы дают основу для всей этой деятельности. Оркестровка контейнеров основана на Linux и обеспечивает дополнительный уровень координации, который объединяет отдельные контейнеры в единое целое”. —  Гордон Хафф, IT-евангелист Red Hat.

“Контейнерная оркестровка — это следующий шаг после использования одного контейнера для запуска службы. Это управление несколькими контейнерами, которые работают вместе как часть инфраструктуры приложения. Оркестровка использует подход “инфраструктура как код”, как и контейнеры”. 

“Контейнеризация почти полностью связана с настройкой и развёртыванием отдельной службы, а оркестровка контейнеров — это про то, как несколько контейнеров будут работать вместе. Они будут декларативно описывать неизменяемую настройку инфраструктуры для контейнеров, сеть контейнеров и правила масштабирования”. — Зак Шойлев, Chief Developer Advocate, Netdata.

“Контейнерная оркестровка относится к инструментам и платформам, которые используют для автоматизации, управления и планирования приложений, определённых отдельными контейнерами. Инструменты оркестрации контейнеров, как Kubernetes, помогают запускать и управлять всеми вашими контейнерами в производственной среде и решать проблемы, которых могло не быть на стадии разработки на одной машине”. 

“Например, обновление приложений, которые состоят из нескольких контейнеров, работающих в производственной среде, без простоев или даже восстановления после полного отключения ЦОДа. Контейнерную оркестровку можно использовать в любой среде, где вы используете контейнеры. Это поможет вам развернуть одно и то же приложение в разных средах без необходимости его перепроектировать”. — Гоу Рао, технический директор Portworx.

“Подумайте о своём ноутбуке, где у вас много приложений. Один инженер не следит за одной машиной, то есть соотношение количества инженеров и серверов не равно 1:1. Обычно они управляют тысячами машин, если не десятками тысяч. Так что, если программа перестаёт работать или что-то нужно обновить, контейнеры упростят эту задачу. Мы, как потребители, ожидаем быстрых изменений, и если кому-то придётся переустановить программное обеспечение на 10 000 машин, это займёт целую вечность”.

“Поэтому мы пришли к оркестратору контейнеров. Диспетчер ресурсов частей и планировщик частей эквивалентны оркестратору. Менеджер ресурсов гарантирует, что вы получите именно то, о чём просите. Планировщик похож на менеджера в розничном магазине — он обеспечивает нужное количество сотрудников (например, достаточное количество узлов) и знает, что делать, если кто-то заболел (минимальные и максимальные значения). — Рави Лахман, евангелист Harness.

“Контейнерная оркестровка — это координация того, где и как контейнеризованный  процесс выполняется в среде”. – Джонатан Кац, вице-президент по разработке платформ Crunchy Data, обладатель приза за краткость.

Зачем нужна оркестровка контейнеров?

Контейнеры — это довольно изящная эволюция того, как ПО упаковывается, развёртывается и используется. Но как только разработчики начали их использовать, стало ясно, что нужны инструменты, которые могли бы обеспечить бесперебойную работу вообще всего. Особенно, если вы хотите запустить контейнеры где-нибудь, кроме локального компьютера.”

“Когда контейнеры Docker стали популярны впервые, они в основном работали на одном компьютере — ноутбуке разработчика”, — говорит Гоу Рао из Portworx. “Но когда стало ясно, что контейнеры можно использовать вместо виртуальных машин для запуска приложений, они начали работать на многих компьютерах, и поэтому нужно было управлять множеством контейнеров”.

Это может превратиться в операционный ад даже для самых крупных команд, особенно когда слово “масштаб” является основным в лексиконе организации.

Шойлев из Netdata отмечает, что масштабирование — не насущная необходимость для устаревшего приложения со стабильной базой пользователей, но “контейнеры и оркестровка — незаменимые инструменты для роста онлайн-приложений”.

“Приложение может масштабироваться по горизонтали, потому что несколько контейнеров могут быть легко запущены или остановлены даже для одного и того же типа услуг”, — продолжает Шойлев. 

“Инфраструктура управления контейнерами позаботится о деталях, если приложение правильно спроектировано и настроено. Команда также может масштабироваться:  конфигурация и оркестровка инфраструктуры приложений хранятся в файлах конфигурации, что позволяет сотрудничать с использованием общих методов разработки ПО”.

В чём разница между оркестровкой и автоматизацией?

Мы уже постарались ответить на этот вопрос раньше, но рассмотрим отдельно и здесь.

Давайте представим гудящую машину с множеством взаимодействующих частей. “В простейшем смысле автоматизация заключается в том, что каждая отдельная часть снова и снова выполняет одни и те же повторяющиеся шаги”, — говорит Э. Г. Надхан, главный архитектор и стратег Red Hat в Северной Америке. 

Он предлагает представить себе американские горки, которые начинают движение по определенному маршруту вверх, вниз и в сторону, а затем останавливаются. Американские горки следуют той же программе через заранее определённые промежутки времени. 

“Теперь давайте добавим несколько переменных к этому механизму, который должен регулироваться и функционировать по-разному в зависимости от других факторов: погоды, рабочих нагрузок, возрастной категории пассажиров и т.д. Оркестровка включает в себя динамические корректировки в среду: введение дополнительных частей, вывод из эксплуатации существующих, увеличение частоты их выполнения, изменение их рабочих порогов и графиков. Оркестровка гарантирует, что процедуры подстраиваются под эти отклонения”.

В чём разница между оркестровкой и Kubernetes?

В зависимости от того, кого вы спросите, ответ, скорее всего, будет “Никакая”.

Более конкретный ответ: Kubernetes — платформа с открытым исходным кодом для оркестровки контейнеров. Это не единственный вариант для оркестровки, но многие выбирают его по умолчанию.

“Есть много вариантов оркестровки контейнеров, включая Kubernetes и его различные дистрибутивы”, — говорит Рао. “У каждого есть свои плюсы и минусы, но растущая популярность Kubernetes и сильная поддержка сообщества делают его королём оркестраторов контейнеров”.

Как объяснить оркестровку нетехническим специалистам?

Тимлидам и их командам иногда приходится объяснять оркестровку другим людям, которые плохо разбираются в технических моментах. 

“Если вы не работаете в IT, вы вряд ли слышали о Kubernetes. Он быстро внедряется в мире технологий для автоматизации всех серверных функций, нужных для запуска крупномасштабных приложений, которые ориентируются на конечного потребителя и на бизнес”, — говорит Рао. “Все эти приложения работают в облаке, и когда один из облачных серверов отключается, бизнес не может допустить, чтобы это привело к простоям. Все эти серверные компоненты нужно “оркестровать”, чтобы приложения оставались в сети”.

Классическое сравнение: музыкальный оркестр.

Да, музыкальная метафора работает.

“Контейнерный оркестратор работает аналогично тому, как дирижёр управляет оркестром: он подаёт сигнал части группы, чтобы начать или прекратить играть, и даёт указания, насколько громко или быстро играть”, — говорит Кац из Crunchy Data. “Точно так же оркестратор контейнеров сообщает контейнерным процессам, на каких узлах нужно работать и какие ресурсы им можно потреблять”.

Рао расширяет аналогию с дирижёром и оркестровкой: “Kubernetes координирует, настраивает и направляет различные звуки, паттерны и оркестрантов, которые составляют приложение, установленное на сервере. Только если все компоненты работают вместе, музыка звучит красиво. В противном случае у вас будет просто шум “.

Производство автомобилей

Другая ключевая концепция оркестровки контейнеров заключается в том, что она даёт  группам стандартизировать процессы и язык в гетерогенных, распределённых средах и приложениях. Рассмотрим пример:

“Если ваше приложение — автомобиль, то оркестровка контейнеров — это заводской проектный документ для этого автомобиля”, — говорит Шойлев. “Это позволяет инженерам настраивать производственные процессы с использованием четких, подробных и описательных документов, которые после проверки и утверждения дадут заводским рабочим производить и тестировать один и тот же автомобиль снова и снова”.

“Всем известное приложение”

Лахман любит аналогию “хорошо знакомое приложение”, чтобы описать контейнеры и оркестровку для кого-то с минимальными техническими знаниями.

“Если мы говорим с кем-то нетехническим, как, например, с моей мамой, я всегда начинаю с приложения или даже с веб-сайта: ”Эй, вы знаете Facebook или CNN?”

Затем Лахман указывает, что такие приложения и сайты должны запускаться за кулисами на другом компьютере, чтобы иметь возможность правильно отображать их на ваших собственных устройствах. Но, как и соотношение количества инженеров и серверов, это не 1:1.

“Неэффективно иметь один компьютер для одного конечного пользователя —  представьте, если бы у Facebook были миллиарды компьютеров — поэтому есть способы распределить и увеличить плотность сервиса”, — говорит Лахман. “Привет, контейнеры”.

Пример отеля

На примере жилья тоже можно понять, что делает оркестровка контейнеров. Лахман сравнивает дом на одну семью с физическим сервером: “Он рассчитан на долговечность и определённую степень уникальности. Если что-то не так с вашим домом, вы это исправляете”.

Если бы виртуальные машины были способом уплотнения физической среды, то многоквартирный дом был бы следующим шагом в аналогии, говорит Лахман.

А теперь подумайте об отеле и его назначении. Плотность размещения обычно очень плотная, и большинство отелей обычно строятся для краткосрочного использования их арендаторами.

“Контейнеры похожи на гостиничные номера”, — говорит Лахман. Если с вашей комнатой что-то не так, вы можете попросить другую. В любом случае вы вряд ли  задержитесь там надолго.

Но с точки зрения оператора гостиниц возникает проблема: “При такой плотности вам нужна помощь в заполнении всех номеров, чтобы сделать отель прибыльным”, —  говорит Лахман. “Представьте, что риэлтор показывает каждый отдельный номер в отеле. В нашем случае это работа оркестратора контейнеров”.

Возвращаясь к более раннему определению Лахмана, оркестраторы контейнеров являются частично диспетчером ресурсов и частично планировщиком.

С точки зрения менеджера ресурсов, Лахман приравнивает это к подбору наилучшего из возможных гостиничных номеров: если вам нужны две кровати размера queen-size или одна кровать размера king-size, то вы не берёте их с собой, а отель сам предоставляет их.

Между тем, “планировщик может следить за тем, чтобы в вашем гостиничном номере всегда была бутылка воды и определённое количество подушек, и если у вас закончится вода или у вас будет больше гостей, появится больше бутылок с водой”, —  говорит Лахман. “Способность быстро реагировать, чтобы убедиться, что отель работает, — вот что нужно оркестратору контейнеров, наиболее плодотворным из которых является Kubernetes”.

Сложно просто говорить о сложном

Оркестровка — не самая простая концепция в IT, как и контейнеры, с которыми она тесно связана. Попробуйте как-нибудь объяснить своим родителям или друзьям, что такое оркестровка, и расскажите нам о результате. Уверяем, результат может вас удивить.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *