Что такое оркестровка контейнеров: объясняем на пальцах
Оркестровка помогает запускать контейнерные рабочие нагрузки в любом масштабе. Так стратегия гибридного облака становится более гибкой. Вот как кратко объяснить оркестровку контейнеров и платформы оркестрации по типу 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, как и контейнеры, с которыми она тесно связана. Попробуйте как-нибудь объяснить своим родителям или друзьям, что такое оркестровка, и расскажите нам о результате. Уверяем, результат может вас удивить.
Для получения дополнительной информации по учебным материалам, рекомендуем посетить наш официальный сайт — ITEDUCENTER