Перейти до вмісту

Модуль 5.5: EKS у продакшні — Масштабування, Спостережуваність та Витрати

Складність: [COMPLEX] | Час на виконання: 3 год | Передумови: Модуль 5.1 (Архітектура EKS), Модуль 5.2 (Мережа EKS)

Чому цей модуль важливий

Розділ «Чому цей модуль важливий»

У вересні 2023 року стрімінгова компанія запустила новий серіал, який миттєво став вірусним. Їхній бекенд на EKS виріс із 200 подів до 1 800 за 20 хвилин. Стандартний автомасшабувальник подів (HPA) спрацював чудово — він створив поди. Проте автомасшабувальник серверів (Cluster Autoscaler) не встигав. Йому знадобилося 8 хвилин, щоб зрозуміти, що потрібні нові вузли, і ще 5 хвилин, щоб вони завантажилися та приєдналися до кластера. Протягом цих 13 хвилин користувачі бачили помилки та нескінченне “колесо очікування”.

Наступного кварталу вони замінили Cluster Autoscaler на Karpenter. Під час наступного піку Karpenter зафіксував потребу в нових подах за секунди, сам обрав найвигідніші типи серверів і запустив їх напряму через API AWS. Нова потужність була готова менш ніж за 90 секунд.

Але масштаб — це лише частина справи. Без спостережуваності ви не знаєте, чому стався збій. А без управління витратами такий стрибок на 1 800 подів може коштувати вам тисячі доларів за одну ніч, якщо не використовувати Spot-екземпляри.

У цьому модулі ви опануєте Karpenter для швидкого запуску серверів, навчитеся безпечно використовувати Spot-екземпляри для економії до 90%, налаштуєте детальний моніторинг через Container Insights та впровадите Kubecost, щоб точно знати, скільки кожна команда витрачає на Kubernetes.


Karpenter: Масштабування нового покоління

Розділ «Karpenter: Масштабування нового покоління»

Karpenter — це сучасний замінник Cluster Autoscaler від AWS. Замість того, щоб керувати фіксованими групами серверів (ASG), він створює саме ті сервери, які потрібні вашим подам прямо зараз.

ФункціяCluster AutoscalerKarpenter
Швидкість3-10 хвилин30-90 секунд
Вибір залізаФіксований (ви задаєте)Динамічний (Karpenter обирає сам)
ОптимізаціяОбмежена рамками групиМаксимальна (стискає поди на менше вузлів)
СкладністьВисока (треба багато ASG)Низька (лише правила NodePool)

Spot-екземпляри: Економія до 90%

Розділ «Spot-екземпляри: Економія до 90%»

Spot-сервери — це спосіб запустити ваші поди за копійки. Karpenter робить роботу зі Spot надзвичайно простою: він сам знайде вільні сервери і замінить їх, якщо AWS попросить їх назад.

Правила безпеки для Spot:

  1. Тільки Stateless: запускайте там веб-сайти, воркери черг, аналітику. Не ставте бази даних.
  2. Диверсифікація: дозвольте Karpenter обирати з 20+ різних типів серверів (m5, c5, r6 і т.д.). Тоді ймовірність, що вимкнуть усі одразу, стає майже нульовою.
  3. Fallback: налаштуйте систему так, щоб вона перемикалася на звичайні сервери (On-Demand), якщо Spot-адреси закінчилися.

Спостережуваність (Observability)

Розділ «Спостережуваність (Observability)»

Ви не можете керувати тим, чого не бачите.

  • Container Insights: Вбудовані дашборди AWS CloudWatch. Показують усе: від навантаження на диск сервера до споживання пам’яті окремим контейнером.
  • Control Plane Logs: Обов’язково вмикайте логи audit та authenticator. Це дозволить вам знати, хто видалив под або чому розробник не може залогінитися в кластер.
  • Prometheus + Grafana: Стандарт індустрії для тих, хто хоче власний глибокий моніторинг та алертинг.

Kubecost: Скільки коштує мій неймспейс?

Розділ «Kubecost: Скільки коштує мій неймспейс?»

У хмарі ви отримуєте загальний рахунок за сервери. Ви не знаєте, скільки з цього витратив відділ “Маркетингу”, а скільки — “Розробка”. Kubecost (або OpenCost) аналізує ваш кластер і каже:

  • “Неймспейс payments витратив $420 за місяць”.
  • “Ви втрачаєте $1 200 на місяць, бо поди просять забагато пам’яті, яку не використовують”.

ПомилкаЧому це стаєтьсяЯк виправити
Немає Resource RequestsРозробники забули вказати CPU/RAMБез цих значень Karpenter не зможе підібрати правильний сервер
Spot для баз данихСпроба екстремальної економіїБаза вимкнеться за 2 хвилини і дані будуть недоступні. Використовуйте On-Demand для Stateful
Логи аудиту ввімкнені всі”На всяк випадок”Логи API дуже важкі і дорогі. Вмикайте тільки те, що реально аналізуєте
Ігнорування Idle CostФокус тільки на витратах команд30-50% витрат кластера — це сервери, що стоять пустими. Використовуйте Karpenter Consolidation

1. Чому Karpenter вважається швидшим за стандартний Cluster Autoscaler?

Тому що він не чекає на реакцію Auto Scaling Group. Karpenter сам робить розрахунок “який сервер найкраще підходить під ці поди” і викликає API AWS напряму для запуску конкретного екземпляра. Це прибирає 2-3 хвилини очікування.

2. Що таке 'Bin Packing' в контексті Karpenter?

Це стратегія “упаковки” подів на сервери. Karpenter намагається розмістити поди так, щоб сервери були завантажені максимально щільно. Це дозволяє використовувати менше фізичних серверів і економити гроші.


Практична вправа: Оптимізація витрат

Розділ «Практична вправа: Оптимізація витрат»
  1. Встановіть Karpenter у ваш кластер (через Helm).
  2. Створіть NodePool для Spot-екземплярів із обмеженням по сімействах (m, c, r).
  3. Розгорніть навантаження (Job) на 50 подів, які вимагають 1 CPU кожен.
  4. Спостерігайте, як Karpenter запустить Spot-вузли протягом хвилини.
  5. Встановіть OpenCost і перевірте, скільки коштував запуск цієї вправи.

Ви завершили серію Глибокого занурення в AWS EKS. Тепер ви знаєте все необхідне для запуску промислових, безпечних та економних кластерів у хмарі Amazon.

Що далі?