Метрики PSI для Kubernetes переходять у бета-версію

У міру зростання розміру та складності кластерів Kubernetes розуміння стану та продуктивності окремих вузлів стає все більш важливим. Ми раді оголосити, що з Kubernetes v1.34 Метрики інформації про затримки (PSI) перейшли в бета-версію.

Що таке інформація про затримки (PSI)?

Pressure Stall Information (PSI) є функцією ядра Linux (версія 4.20 і новіші), яка забезпечує канонічний спосіб кількісно оцінити тиск на інфраструктурні ресурси з точки зору того, чи перевищує попит на ресурс поточну пропозицію. Вона виходить за межі простих метрик використання ресурсів і натомість вимірює кількість часу, протягом якого завдання затримуються через конкуренцію за ресурси. Це потужний спосіб виявлення та діагностування вузьких місць у ресурсах, які можуть вплинути на продуктивність застосунків.

PSI надає метрики для CPU, памʼяті та I/O, які класифікуються як some або full pressure:

some
Відсоток часу, протягом якого принаймні одне завдання затримується на ресурсі. Це вказує на певний рівень конкуренції за ресурси.
full
Відсоток часу, протягом якого всі не простоюючі завдання затримуються на ресурсі одночасно. Це вказує на більш серйозне вузьке місце в ресурсах.
Діаграма, що ілюструє різницю між `some` та `full` тиском PSI.

PSI: Тиск 'Some' та 'Full'

Ці метрики агрегуються за 10-секундними, 1-хвилинними та 5-хвилинними ковзаючими вікнами, що забезпечує всебічний огляд тиску на ресурси з часом.

Метрики PSI в Kubernetes

З увімкненою функціональною можливістю KubeletPSI, kubelet тепер може збирати метрики PSI з ядра Linux і надавати їх через два канали: Summary API та точку доступу /metrics/cadvisor Prometheus. Це дозволяє вам відстежувати та отримувати сповіщення про тиск на ресурси на рівні вузла, пода та контейнера.

Наступні нові метрики доступні у форматі експозиції Prometheus через /metrics/cadvisor:

  • container_pressure_cpu_stalled_seconds_total
  • container_pressure_cpu_waiting_seconds_total
  • container_pressure_memory_stalled_seconds_total
  • container_pressure_memory_waiting_seconds_total
  • container_pressure_io_stalled_seconds_total
  • container_pressure_io_waiting_seconds_total

Ці метрики, разом з даними з Summary API, забезпечують детальний огляд тиску на ресурси, що дозволяє вам точно визначити джерело проблем з продуктивністю та вжити коригувальних заходів. Наприклад, ви можете використовувати ці метрики для:

  • Виявлення витоків памʼяті: Постійно зростаючий тиск some для памʼяті може вказувати на витік памʼяті в застосунку.
  • Оптимізація запитів та обмежень ресурсів: Розуміючи тиск на ресурси ваших робочих навантажень, ви можете точніше налаштувати їх запити та обмеження ресурсів.
  • Автоматичне масштабування робочих навантажень: Ви можете використовувати метрики PSI для ініціювання подій автоматичного масштабування, забезпечуючи, щоб ваші робочі навантаження мали ресурси, необхідні для оптимальної роботи.

Як увімкнути метрики PSI

Щоб увімкнути метрики PSI у вашому кластері Kubernetes, вам потрібно:

  1. Переконатися, що ваші вузли працюють на версії ядра Linux 4.20 або новішій та використовують cgroup v2.
  2. Увімкнути функціональну можливість KubeletPSI у kubelet.

Після увімкнення ви можете почати збирати дані з точки доступу /metrics/cadvisor за допомогою вашого рішення для моніторингу, сумісного з Prometheus, або запитувати Summary API для збору та візуалізації нових метрик PSI. Зверніть увагу, що PSI є функцією ядра Linux, тому ці метрики недоступні на вузлах Windows. Ваш кластер може містити комбінацію вузлів Linux та Windows, але на вузлах Windows kubelet не надає метрики PSI.

Що далі?

Ми раді представити метрики PSI спільноті Kubernetes і чекаємо на ваші відгуки. Як функція бета-версії, ми активно працюємо над поліпшенням і розширенням цієї функціональності до стабільного випуску GA. Ми закликаємо вас спробувати її та поділитися своїм досвідом з нами.

Щоб дізнатися більше про метрики PSI, ознайомтеся з офіційною документацією Kubernetes. Ви також можете долучитися до обговорення на каналі #sig-node в Slack.