Ріквести і ліміти в кубернетесі це ще одна з простих штук, що насправді складні 🙂 Не всі розуміють до кінця, що вони означають і як працюють. Дехто вважає, що за допомогою ріквестів можна додати ресурсів до своїх сервісів. Типа збільшуємо CPU вдвічі і отримуємо вдвічі більшу швидкодію.
Звісно це не так. Швидкодія залежить насамперед від самого сервіса, як він може використовувати наявні ресурси. Якщо у вас однопоточний код, то зайві CPU використовуватись не будуть. Проте вони будуть займати квоту на нодах, не дозволяючи запустити інші поди, хоча є вільні ресурси. Ефект собаки на сіні.
Виходить, що головна задача з ріквестами (і лімітами) -- це вирівняти їх з актуальним споживанням сервісів. Взяти споживання за якийсь час, і поставити ріквести в якийсь перцентиль (95 чи 99).
Задача нескладна, але нудна. Колись памятаю в одній із моїх попередніх контор це була ініціатива на місяці. Спочатку девопси довго робили дашборд на графані, де можна було порівняти ріквести і актуальне споживання. Потім команди підлаштовували свої сервіси під ріквести, щоб усе співпадало. Десятки (може і сотні) годин було витрачено на це. А чи не можна це якось автоматизувати?
Насправді можна. В кубернетесовському репо
kubernetes/autoscaler є проект
Vertical Pod Autoscaler, який як вміє рекомендувати правильні налаштування ріквестів і лімітів з огляду на фактичне споживання. Крім того, він може сам їх змінювати, використовуючи різні стратегії.
Це все доволі круто, проте VPA працює за допомогою спеціальних типів ресурсів, які треба створювати окремо. В цих ресурсах можна задавати стратегії, граничні значення (часом VPA може порізати сервіс більше, ніж треба) ну і ресурси, які треба налаштувати (це деплойменти, стейтфул сети і тд). Коли в нас нові сервіси, то просто до маніфестів додається ще маніфест автоскейлера, і потім ми не паримось щодо ріквестів та лімітів. Але що робити, якщо ми лише зараз прочитали цей пост, і хочемо автоматично поскейлити всі наші сервіси, яких в нас багато? Додавати вручну ресурси автоскейлера звісно можна, але це якось неспортивно і нудно.
Для вирішення такої задачи є
інструмент goldilocks (хз шо за назва). Це штука, яка автоматично створює маніфести автоскейлера у неймспейсах, і конфігуриться анотаціями (лейблами) неймспейсів.
Вона вміє
показувати дашборд з рекомендованими значенями, які можна використовувати для налаштувань ріквекстів і лімітів. І так само за домогою лейблів можна зробити так, щоб
ріквести і ліміті налаштовувались автоматично.
Це чудовий варіант порізати всі свої сервіси, потім поспостерігати за їх поведінкою