Як моніторити Kubernetes: показники та інструменти

Стрімке зростання контейнерів у бізнесі корпоративного рівня принесло багато переваг розробникам, DevSecOps та ІТ-командам у всьому світі. Приміром, провідний освітній портал Pearson, що обслуговує 75 млн студентів, використовує Kubernetes для запуску деяких своїх програм. Компанія заявляє, що продуктивність розробників підвищилася на 15-20% після впровадження K8s.

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

Що слід відстежувати в Kubernetes?

Kubernetes — це опенсорсне ПЗ для автоматизації розгортання, масштабування та керування контейнерними програмами. Він складається з робочих вузлів — worker nodes, на яких запускаються користувацькі програми та Kubernetes Control Plane, який відповідає за роботу кластера.

Насамперед потрібно контролювати Kubernetes Control Plane. Центральним його вузлом є API-сервер, який зберігає свій стан в базі даних etcd. А також, різноманітні системні компоненти: Controller Manager, Kebelet, Scheduler та інше.

Для моніторингу робочих вузлів дефолтних рішень немає. Kubernetes надає базову інформацію про те, скільки програма запитує оперативної пам’яті та ЦП, але це не показує реальний стан речей. Тому найпопулярнішим рішенням для збору даних метрик є запуск node-exporter на кожному з worker nodes, який надає розширену інформацію, збираючи її з сервера. Це використання ЦП, пам’яті та інших різноманітних параметрів.

Досить важливим системним компонентом Kubernetes Control Plane є Kubelet, який запускається на кожному сервері. Його теж треба контролювати, бо Kubelet є сполучною ланкою між API-сервером та Container Runtime Interface. А останній вже запускає контейнери.

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

Чому моніторинг Kubernetes важливий?

Для масштабування програми, її швидкого та безпроблемного доставляння командам DevOps потрібне глибоке розуміння кластера K8s та його компонентів. Важливо вивчати продуктивність контейнерів, модулів і служб, а також компонентів кластера. Для чого? Щоб контролювати продуктивність програми в кластері Kubernetes.

Моніторинг K8s допомагає вимірювати продуктивність програми для виявлення та усунення слабких місць.

Ключові показники для моніторингу Kubernetes

Нижче навели кілька важливих показників, які підприємства повинні враховувати для моніторингу кластерів Kubernetes та їх компонентів.

Аварійні цикли

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

Під час розгортання Kubernetes, ви можете побачити повідомлення «CrashLoopBackOff». Це означає, що один або кілька контейнерів виходять з ладу та постійно перезапускаються. Ось кілька причин цього:

  • помилки під час розгортання Kubernetes;
  • відсутні залежності;
  • зміни, викликані останніми оновленнями.

Використання ЦП

Використання центрального процесора важливо відстежувати з двох причин: 

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

Дисковий простір

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

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

Кожна з цих умов потребує уваги та своєчасного розв’язання проблеми.

Популярні засоби моніторингу K8s

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

Prometheus

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

Kubernetes Dashboard

Kubernetes Dashboard — це вебінтерфейс користувача K8s, який можуть використовувати команди DevOps для розгортання контейнерних програм. Використовуючи цю інформаційну панель, співробітники можуть розв’язувати проблеми всередині контейнерної програми та керувати ресурсами кластера. За допомогою Kubernetes Dashboard можна створювати та змінювати ресурси K8s.

Цей інструмент на основі інтерфейсу користувача, який підтримується як частина стека Kubernetes, має безліч функцій. Вони дозволяють розробникам керувати робочими навантаженнями та перевіряти використання ресурсів. Kubernetes Dashboard допомагає моніторити систему за допомогою різних об’єктів. Приміром, Config Map — об’єкт API Kubernetes, який дозволяє відокремити конфігураційні файли від вмісту образу, щоб забезпечити відмовостійкість контейнерних програм.

BuildPiper

BuildPiper має інформаційну панель Service Overview Dashboard, яка дозволяє командам DevOps переглядати та відстежувати деталі збірки та розгортання. Це одна з провідних повністю керованих служб Kubernetes, яка дозволяє керувати ресурсами AWS у кількох кластерах K8s. Також, інформаційна панель Service Kubernetes, надає готові мікросервіси та можливості спостереження за кластерами. Це дозволяє користувачам переглядати та контролювати продуктивність, працездатність, розподіл ЦП і пам’яті, доступність вузла, логи та інші важливі показники. 

Післяслово

Система моніторингу Kubernetes вимагає можливості автоматично визначати зміни та продовжувати безперервно відстежувати події, логи, стан працездатності модуля та багато іншого.

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

При виборі платформи розгортання K8s або рішення для моніторингу, важливо, щоб обране вами рішення: 

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

Хочете дізнатися більше про автоматизацію та моніторинг K8s? Ознайомтеся з програмою курсу Адміністрування Kubernetes від IT Education Center, запишіться на заняття та здобувайте навички рівня DevOps. Оновити свою базу знань можна не виходячи з дому 😌 

Про переваги GitOps для Kubernetes знайдете тут

Залишити відповідь

Дякуємо, що поділились