Site icon IT Education Center Blog – блог навчального центру DevOps – ITEDU by NETFORCE Group

Оптимізуємо витрати на Kubernetes: 5 порад для фахівців

Kubernetes — золотий стандарт оркестрування. За даними дослідження CNCF у 2021 році, його вже використовують 96% компаній. Завдяки Kubernetes бізнеси можуть легко розгортати численні контейнери інстансів. Проте, як і будь-який інструмент, він має свої недоліки. Один із них — високі витрати. 

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

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

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

Що ще потрібно, щоб зменшити витрати на Kubernetes та зберегти продуктивність вашого бізнесу — розберімося далі.

Обмеження ресурсів

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

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

Це можна реалізувати за допомогою Kubelet та середовища виконання контейнера. Ви можете встановити обмеження пам’яті, наприклад, 4 Гб, і контейнер не зможе перевищити цей ліміт. А якщо процес у контейнері намагається це зробити, ядро системи перериває його та видає помилку браку пам’яті — out-of-memory.

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

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

Визначити баланс ресурсів вам допоможуть Prometheus та Kubecost.

Автомасштабування

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

Amazon визначає автомасштабування основою оптимізації витрат на Kubernetes. Воно виконує дві функції: 

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

  1. Horizontal Pod Autoscaler для горизонтального масштабування подів. Він спостерігає за використанням ЦП та пам’яті, на базі чого збільшує або зменшує кількість подів. Так він масштабує робоче навантаження відповідно до потреб.
  2. Cluster Autoscaler для масштабування кластера. Автоматично додає або забирає вузли відповідно до показників використання модулів та вузлів.

Вибір правильної хмарної послуги

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

Правильний розмір нодів та подів

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

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

Надлишок ресурсів можна дізнатися за допомогою інструмента Kubernetes Resource Report. Він також покаже конкретні місця, де варто знизити запити на ресурси. 

Графік сну

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

Наприклад, ваша команда розробників працює з хмарним середовищем Kubernetes у стандартний робочий час з 9 до 18. Тоді логічно вимикати середовище з 6 вечора до 9 ранку, оскільки у цей період ви марно витрачаєте кошти.  

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

Висновок

Контейнери змінили та заполонили сферу ІТ, а Kubernetes став найпопулярнішим інструментом для керування ними. Він має багато корисних функцій та задає планку іншим гравцям ринку.

Одним з недоліків Kubernetes є те, що з ним доволі складно розібратися. Проте, якщо ви це зробили, перед вами відкривається світ необмежених можливостей для роботи з контейнерами. Щоб отримувати від цього світу максимум, треба вміти правильно розподіляти ресурси та витрачати бюджети компанії.
Як зменшити витрати на K8s ви вже знаєте. Навчіться працювати з ним на нашому курсі «Адміністрування Kubernetes», щоб стати DevOps інженером, про якого мріють найкращі роботодавці.

Exit mobile version