Що таке kubernetes (k8s) і як він працює?

Автор: Опубліковано

Коротко: Kubernetes, скорочено K8s, — це відкрита платформа для запуску застосунків у контейнерах і керування ними. Вона стежить, щоб працювала задана кількість їхніх копій, замінює недоступні екземпляри та полегшує розгортання нових версій. Корисна для складних систем, але для простого сайту чи невеликого застосунку її підтримка може бути складнішою за сам хостинг.

Від контейнера до керування застосунком

Контейнер — це ізольоване середовище запуску процесу застосунку. Його створюють з образу контейнера, тобто пакета, що містить код, потрібні бібліотеки та початкові налаштування. Завдяки цьому ту саму версію застосунку можна запускати в різних сумісних середовищах без ручного встановлення всіх залежностей.

Окремий контейнер запустити порівняно легко. Труднощі виникають, коли потрібно обслуговувати багато застосунків, розміщувати їх на кількох серверах, оновлювати без тривалих перерв і реагувати на збої. Kubernetes автоматизує частину цих завдань — таке керування називають оркестрацією контейнерів.

Назва K8s — це скорочення слова Kubernetes: між літерами «K» і «s» є вісім літер. Вона не означає окремого продукту чи іншої версії платформи.

Як працює Kubernetes: кластер, вузли та поди

Кластер — це середовище Kubernetes, що складається з площини керування та вузлів, які запускають застосунки. Вузол, англійською node, — це фізична або віртуальна машина. У невеликому тестовому середовищі всі складові можуть працювати на одному комп’ютері.

Площина керування, або control plane, зберігає конфігурацію та координує роботу кластера. Зокрема, вона вирішує, де запустити застосунок. Програмне забезпечення на вузлах виконує ці команди й передає інформацію про стан запущених завдань.

Kubernetes працює за принципом бажаного стану. Замість того щоб вручну запускати кожну копію застосунку, ви оголошуєте, наприклад: «мають працювати три копії цієї версії». Система постійно порівнює цю декларацію з реальністю та намагається усувати відмінності.

Для розуміння основ достатньо чотирьох понять:

Конфігурацію часто записують у файлах YAML — зручному для читання текстовому форматі даних. Для роботи з кластером використовують, зокрема, інструмент командного рядка kubectl.

Що відбувається під час збоїв і оновлень

Уявіть інтернет-магазин, частина якого, що обробляє запити, працює у трьох подах на кількох вузлах. Deployment визначає кількість копій, а Service спрямовує трафік до доступних подів. Якщо один под перестане працювати, Kubernetes намагатиметься запустити йому заміну.

Це не означає миттєвого чи безумовного усунення збою. Кластер повинен мати вільні ресурси, доступ до образу застосунку та працездатну інфраструктуру. Якщо в застосунку є помилка, яка спричиняє збій під час кожного запуску, перезапуск пода не усуне причину.

Під час оновлення Kubernetes може поступово замінювати старі поди новими. Перевірки готовності, тобто налаштовані перевірки здатності застосунку обробляти запити, допомагають не спрямовувати трафік до копії, яка ще запускається. Проте розгортання без перерви в роботі потребує відповідної конфігурації та архітектури застосунку — платформа не гарантує цього автоматично.

Подібним чином працює масштабування. Kubernetes дає змогу змінювати кількість копій, а після налаштування механізму автоматичного масштабування може робити це на основі метрик, як-от використання процесора. Проте додавання подів не прискорить перевантажену базу даних і не усуне інше спільне вузьке місце.

Чого Kubernetes не замінює

Kubernetes не створює образів застосунків і не замінює всього процесу тестування та публікації коду. Також він не є синонімом Docker. Інструменти Docker допомагають, зокрема, створювати й локально запускати контейнери, тоді як Kubernetes керує їхньою роботою в кластері, використовуючи відповідне середовище виконання, наприклад containerd.

Платформа сама по собі не забезпечує повноцінного моніторингу, резервного копіювання чи безпеки застосунку. Потрібно спланувати права доступу, оновлення, збирання журналів і захист облікових даних. Доступ з інтернету також потребує відповідного налаштування мережі й зазвичай додаткових компонентів або послуг постачальника.

Особливої уваги потребують дані. Под може зникнути й бути створений заново, тому файли, які потрібно зберігати постійно, не мають залишатися лише в доступному для запису шарі контейнера. Kubernetes підтримує постійні томи, але їх використання не замінює резервної копії та перевіреної процедури відновлення.

Коли впровадження K8s має сенс

Kubernetes варто розглянути, якщо ви підтримуєте багато сервісів, часто їх розгортаєте, потребуєте незалежного масштабування та маєте команду, здатну обслуговувати платформу. Тоді єдиний підхід до налаштування й розгортання може зменшити кількість ручних операцій.

Для блогу, корпоративного сайту чи одного невеликого застосунку простіший хостинг, віртуальний сервер або керована платформа для застосунків часто означають менше обов’язків. Це практична оцінка, а не технічне обмеження: невеликий застосунок можна запустити в Kubernetes, але переваги можуть не виправдати витрачених зусиль.

Керований Kubernetes перекладає частину обов’язків на постачальника, але їхній обсяг залежить від послуги. Перед вибором перевірте в офіційній документації та тарифах, хто відповідає за оновлення й доступність площини керування, а також яка плата стягується за сервери, диски, мережу та додаткові компоненти.

Якщо ви лише знайомитеся з K8s, запустіть локальний тестовий кластер, наприклад за допомогою kind або minikube. Розгорніть простий застосунок із двома копіями та видаліть один под. Спостерігаючи, як система його замінює, ви зможете зрозуміти основний механізм без побудови інфраструктури для робочого середовища.

Читайте також

Дізнайтеся, як PHP-FPM обробляє запити PHP, чим відрізняється від вебсервера та як налаштувати процеси під трафік і ресурси хостингу.
Дізнайтеся, як BIND обслуговує DNS, чим відрізняються його серверні ролі та коли варто розгортати його самостійно замість керованої послуги.
Дізнайтеся, що означають польський реєстр і номер REGON, чим вони відрізняються від NIP та KRS і як перевірити дані підприємства.