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

Модуль 2.2: Масштабування

Складність: [СЕРЕДНІЙ] - Концепції оркестрації

Час на виконання: 25-30 хвилин

Передумови: Модуль 2.1 (Планування)


Що ви зможете робити

Розділ «Що ви зможете робити»

Після завершення цього модуля ви зможете:

  • Порівняти Horizontal Pod Autoscaler, Vertical Pod Autoscaler та Cluster Autoscaler
  • Пояснити як HPA використовує метрики для прийняття рішень щодо масштабування
  • Визначити який підхід до масштабування підходить для даного шаблону навантаження (CPU-bound, memory-bound, event-driven)
  • Оцінити компроміси між надлишковим забезпеченням та автомасштабуванням для вартості та надійності

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

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

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


Типи масштабування

Розділ «Типи масштабування»
┌─────────────────────────────────────────────────────────────┐
│ ВИМІРИ МАСШТАБУВАННЯ │
├─────────────────────────────────────────────────────────────┤
│ │
│ ГОРИЗОНТАЛЬНЕ МАСШТАБУВАННЯ (scale out/in) │
│ Додавання/видалення реплік Подів │
│ До: [Под] [Под] [Под] │
│ Після: [Под] [Под] [Под] [Под] [Под] │
│ │
│ ВЕРТИКАЛЬНЕ МАСШТАБУВАННЯ (scale up/down) │
│ Збільшення/зменшення ресурсів Пода │
│ До: [Под: 1 CPU, 1ГБ] │
│ Після: [Под: 2 CPU, 2ГБ] │
│ │
│ МАСШТАБУВАННЯ КЛАСТЕРА │
│ Додавання/видалення вузлів з кластера │
│ До: [Вузол 1] [Вузол 2] │
│ Після: [Вузол 1] [Вузол 2] [Вузол 3] │
│ │
└─────────────────────────────────────────────────────────────┘

HPA автоматично масштабує кількість реплік Подів:

┌─────────────────────────────────────────────────────────────┐
│ HORIZONTAL POD AUTOSCALER │
├─────────────────────────────────────────────────────────────┤
│ │
│ Як працює: │
│ 1. HPA моніторить метрики (CPU, пам'ять, користувацькі) │
│ 2. Порівнює з цільовим порогом │
│ 3. Обчислює бажану кількість реплік │
│ 4. Масштабує Deployment вгору або вниз │
│ │
│ Формула (спрощена): │
│ бажаніРепліки = поточніРепліки × (поточнаМетрика / │
│ цільоваМетрика) │
│ │
└─────────────────────────────────────────────────────────────┘
ТипОписПриклад
ResourceУтилізація CPU, пам’яті50% CPU в середньому
PodsКористувацькі метрики з ПодівЗапити на секунду
ObjectМетрики з інших об’єктівДовжина черги
ExternalМетрики поза кластеромХмарні метрики

VPA автоматично регулює запити та обмеження ресурсів:

┌─────────────────────────────────────────────────────────────┐
│ VERTICAL POD AUTOSCALER │
├─────────────────────────────────────────────────────────────┤
│ │
│ Як працює: │
│ 1. VPA спостерігає фактичне використання ресурсів │
│ 2. Рекомендує оптимальні requests/limits │
│ 3. Може автоматично оновлювати Поди (пересворює їх) │
│ │
│ Режими: │
│ • Off: Тільки рекомендації, без дій │
│ • Initial: Встановлення тільки при створенні Пода │
│ • Auto: Оновлення працюючих Подів (потребує перезапуск) │
│ │
│ Примітка: VPA НЕ вбудований в ядро Kubernetes │
│ Це додатковий компонент │
│ │
└─────────────────────────────────────────────────────────────┘

Cluster Autoscaler додає або видаляє вузли:

┌─────────────────────────────────────────────────────────────┐
│ CLUSTER AUTOSCALER │
├─────────────────────────────────────────────────────────────┤
│ │
│ МАСШТАБУВАННЯ ВГОРУ: Додає вузли коли Поди не можуть │
│ бути заплановані │
│ Поди в стані Pending → CA виявляє → Запитує новий вузол │
│ → Вузол приєднується → Поди плануються │
│ │
│ МАСШТАБУВАННЯ ВНИЗ: Видаляє недовантажені вузли │
│ Вузол з низькою утилізацією → CA перевіряє чи можна │
│ перемістити Поди → Дренує вузол → Видаляє з хмари │
│ │
│ Працює з: AWS Auto Scaling, GCP MIG, Azure VMSS │
│ │
└─────────────────────────────────────────────────────────────┘

Порівняння масштабування

Розділ «Порівняння масштабування»
АспектHPAVPACluster Autoscaler
Що масштабуєКількість ПодівРесурси ПодівКількість вузлів
НапрямокГоризонтальнийВертикальнийГоризонтальний
ТригерПоріг метрикПатерни використанняНезаплановані Поди
ВбудованийТакНі (додаток)Ні (додаток)
ПростійНіТак (перезапуск Пода)Ні

  • Затримка HPA - За замовчуванням HPA чекає 3 хвилини перед масштабуванням вниз для запобігання коливанням.

  • Потрібен Metrics Server - HPA потребує встановлений Metrics Server для отримання метрик CPU/пам’яті.

  • Користувацькі метрики - HPA може масштабувати на основі користувацьких метрик, таких як HTTP-запити, глибина черги або будь-яка метрика Prometheus.

  • KEDA - Kubernetes Event-Driven Autoscaler — це проєкт CNCF, який розширює HPA більшою кількістю джерел подій.


ПомилкаЧому це шкодитьПравильне розуміння
Без resource requestsHPA не може обчислити утилізаціюЗавжди задавайте requests
Min replicas = 1Єдина точка відмовиВикористовуйте minReplicas >= 2
Масштабування за неправильною метрикоюНеефективне масштабуванняПідберіть метрику до вузького місця
Ігнорування часу масштабування внизВитрати залишаються високимиНалаштуйте відповідну затримку

  1. Що масштабує HPA?

    Відповідь HPA масштабує кількість реплік Подів (горизонтальне масштабування). Він не змінює ресурси кожного Пода.
  2. Яку метрику HPA використовує за замовчуванням?

    Відповідь Утилізацію CPU. Він також може використовувати пам'ять та користувацькі метрики.
  3. Що запускає Cluster Autoscaler для додавання вузлів?

    Відповідь Поди в стані Pending, які не можуть бути заплановані, тому що жоден вузол не має достатньо ресурсів.
  4. Яка різниця між HPA та VPA?

    Відповідь HPA масштабує горизонтально (додає/видаляє Поди). VPA масштабує вертикально (змінює resource requests/limits Подів). HPA без простою; VPA потребує перезапуск Пода.
  5. Чому не слід використовувати HPA та VPA разом на одному Deployment?

    Відповідь Вони можуть конфліктувати. VPA змінює requests, що впливає на відсоток утилізації CPU, що впливає на обчислення HPA. Це може спричинити непередбачувану поведінку масштабування.

Типи масштабування:

  • Горизонтальне (HPA): Додавання/видалення Подів
  • Вертикальне (VPA): Зміна ресурсів Подів
  • Кластерне: Додавання/видалення вузлів

HPA:

  • Масштабує на основі метрик (CPU, пам’ять, користувацькі)
  • Вбудований у Kubernetes
  • Без простою

VPA:

  • Правильно підбирає resource requests
  • Додатковий компонент
  • Потребує перезапуск Пода

Cluster Autoscaler:

  • Додає вузли для Подів у стані Pending
  • Видаляє недовантажені вузли
  • Інтеграція з хмарним провайдером

Модуль 2.3: Оркестрація зберігання - Як Kubernetes керує постійним зберіганням.