Що таке оркестрація контейнерів: пояснюємо на пальцях
Оркестрування допомагає запускати контейнерні робочі навантаження у будь-якому масштабі. Так стратегія гібридної хмари стає більш гнучкою. Ось як коротко пояснити оркестрування контейнерів та платформи оркестрації по типу Kubernetes.
Оркестрування насамперед музичний термін, але це ще й важлива IT-концепція. Команди, які запускають або планують запускати контейнери у виробничому середовищі, вважають, що “важлива IT-концепція” — це м’яко сказано.
Оркестрування потрібне для контейнерних робочих навантажень у будь-якому значному масштабі. Це один із ключових хмарних інструментів, якими гібридну хмару роблять керованою.
“Оркестрування контейнерів робить значно легшим управління складними інфраструктурами, що зростають, і дає легко масштабувати додаток і команду”, — говорить Зак Шойлєв, старший Developer Advocate в Netdata.
Як ви поясните це людям, далеким від техніки? Як штабелі транспортних контейнерів використовують як аналогію для контейнерів ПЗ, так і з оркестровкою працює музична метафора. Уявіть кілька інструментів, кожен із яких грає свою окрему партію, але разом виходить композиція.
Читайте про діяльність DATTALION на нашому сайті ITEDU Blog.
“Контейнерний оркестратор призначений для контейнерів як диригент для оркестру”, — говорить Дейв Егтс, головний технолог 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, як і контейнери, з якими вона тісно пов’язана. Спробуйте якось пояснити своїм батькам чи друзям, що таке оркестровка, та розкажіть нам про результат. Запевняємо, що результат може вас здивувати.
Авторські ІТ-курси з системного адміністрування та DevOps у IT Education Center.