# Автомасштабування робочих навантажень

> З автомасштабуванням ви можете автоматично оновлювати ваші робочі навантаження різними способами. Це дозволяє вашому кластеру еластичніше та ефективніше реагувати на зміни попиту на ресурси.

---

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

У Kubernetes ви можете _масштабувати_ робоче навантаження залежно від поточного попиту на ресурси. Це дозволяє вашому кластеру більш еластично та ефективно реагувати на зміни попиту на ресурси.

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

Перший підхід називається _горизонтальним масштабуванням_, тоді як другий — _вертикальним масштабуванням_.

Є ручні та автоматичні способи масштабування робочих навантажень, залежно від вашого випадку використання.

<!-- body -->

## Ручне масштабування робочих навантажень {#scaling-workloads-manually}

Kubernetes підтримує _ручне масштабування_ робочих навантажень. Горизонтальне масштабування можна виконати за допомогою інтерфейсу командного рядка `kubectl`. Для вертикального масштабування вам потрібно _змінити_ визначення ресурсів вашого робочого навантаження.

Дивіться нижче приклади обох стратегій.

- **Горизонтальне масштабування**: [Запуск кількох екземплярів вашого застосунку](/docs/tutorials/kubernetes-basics/scale/scale-intro/)
- **Вертикальне масштабування**: [Зміна обсягів ресурсів CPU та памʼяті, призначених для контейнерів](/docs/tasks/configure-pod-container/resize-container-resources/)

## Автоматичне масштабування робочих навантажень {#scaling-workloads-automatically}

Kubernetes також підтримує _автоматичне масштабування_ робочих навантажень, що є основною темою цієї сторінки.

Концепція _Автомасштабування_ в Kubernetes стосується можливості автоматичного оновлення обʼєкта, який керує набором Podʼів (наприклад, <a class='glossary-tooltip' title='Керує реплікованим застосунком у вашому кластері.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/workloads/controllers/deployment/' target='_blank' aria-label='Deployment'>Deployment</a>).

### Горизонтальне масштабування робочих навантажень {#scaling-workloads-horizontally}

У Kubernetes ви можете автоматично масштабувати робоче навантаження горизонтально за допомогою [HorizontalPodAutoscaler](/docs/concepts/workloads/autoscaling/horizontal-pod-autoscale/) (HPA).

Він реалізований як ресурс Kubernetes API та <a class='glossary-tooltip' title='Контролер — цикл управління, що спостерігає за загальним станом кластера через apiserver і вносить зміни в намаганні наблизити поточний стан до бажаного.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/architecture/controller/' target='_blank' aria-label='controller'>controller</a> і періодично налаштовує кількість <a class='glossary-tooltip' title='Репліки — це копії обʼєктів Pod, які забезпечують доступність, масштабованість і стійкість до відмов за рахунок утримання ідентичних екземплярів.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/reference/glossary/?all=true#term-replica' target='_blank' aria-label='реплік'>реплік</a> в робочому навантаженні, щоб відповідати спостереженню за використанням ресурсів, таких як використання CPU чи памʼяті.

Є [посібник з інструкціями](/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough) з налаштування HorizontalPodAutoscaler для Deployment.

### Вертикальне масштабування робочих навантажень {#scaling-workloads-vertically}








  <div class="feature-state-notice feature-stable">
      <span class="feature-state-name">СТАН ФУНКЦІОНАЛУ:</span>
      <code>Kubernetes v1.25 [stable]</code>
    </div>
  



Ви можете автоматично масштабувати робоче навантаження вертикально за допомогою [VerticalPodAutoscaler](/docs/concepts/workloads/autoscaling/vertical-pod-autoscale/) (VPA). На відміну від HPA, VPA стандартно не постачається з Kubernetes, але це додатковий компонент, який вам або адміністратору кластера може знадобитися розгорнути, перш ніж ви зможете ним користуватися.

Після встановлення він дозволяє створювати <a class='glossary-tooltip' title='Власний код, який визначає ресурс для додавання до сервера API вашого кластера Kubernetes без створення власного сервера.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/' target='_blank' aria-label='CustomResourceDefinitions'>CustomResourceDefinitions</a> (CRDs) для ваших робочих навантажень, які визначають _як_ і _коли_ масштабувати ресурси керованих реплік.


<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Вам потрібно мати встановлений <a href="https://github.com/kubernetes-sigs/metrics-server">Metrics Server</a> в вашому кластері для роботи VPA.</div>


#### Вертикальне масштабування Podʼів на місці {#in-place-pod-vertical-scaling}








  <div class="feature-state-notice feature-stable" title="Функціональна можливість: InPlacePodVerticalScaling">
              <span class="feature-state-name">СТАН ФУНКЦІОНАЛУ:</span> 
              <code>Kubernetes v1.35 [stable]</code>(стандартно увімкнено)</div>


Починаючи з Kubernetes 1.36, VPA не підтримує зміну розміру Podʼів на місці, але над цією інтеграцією працюють. Щоб вручну змінити розмір Podʼів на місці, див. [Зміна розміру ресурсів контейнера на місці](/docs/tasks/configure-pod-container/resize-container-resources/).

### Автомасштабування на основі розміру кластера {#autoscaling-based-on-cluster-size}

Для робочих навантажень, які потрібно масштабувати залежно від розміру кластера (наприклад, `cluster-dns` чи інші системні компоненти), ви можете використовувати [_Cluster Proportional Autoscaler_](https://github.com/kubernetes-sigs/cluster-proportional-autoscaler). Так само як і VPA, він не є частиною основної функціональності Kubernetes, але розміщений як окремий проєкт на GitHub.

Cluster Proportional Autoscaler відстежує кількість <a class='glossary-tooltip' title='Вузол — це робоча машина в Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/architecture/nodes/' target='_blank' aria-label='вузлів'>вузлів</a>, які готові приймати Podʼи та ядра та масштабує кількість реплік цільового робочого навантаження відповідно.

Якщо кількість реплік має залишитися незмінною, ви можете масштабувати свої робочі навантаження вертикально залежно від розміру кластера, використовуючи [_Cluster Proportional Vertical Autoscaler_](https://github.com/kubernetes-sigs/cluster-proportional-vertical-autoscaler). Проєкт знаходиться **наразі у бета-версії** та доступний на GitHub.

В той час як Cluster Proportional Autoscaler масштабує кількість реплік робочого навантаження, Cluster Proportional Vertical Autoscaler налаштовує вимоги до ресурсів для робочого навантаження (наприклад, Deployment або DaemonSet) залежно від кількості вузлів та/або ядер у кластері.

### Автомасштабування, на підставі подій {#event-driven-autoscaling}

Також існує можливість масштабування робочих навантажень на основі подій, наприклад, використовуючи [_Kubernetes Event Driven Autoscaler_ (**KEDA**)](https://keda.sh/).

KEDA є проєктом, створеним під егідою CNCF, що дозволяє масштабувати ваші робочі навантаження залежно від кількості подій, які потрібно обробити, наприклад, кількість повідомлень в черзі. Існує широкий спектр адаптерів для різних джерел подій на вибір.

### Автомасштабування на основі розкладу {#autoscaling-based-on-schedule}

Ще одна стратегія для масштабування вашого робочого навантаження — це **запланувати** операції масштабування, наприклад, для зменшення використання ресурсів під час годин неактивності.

Схоже на автомасштабування, спровоковане подіями, такої поведінки можна досягти за допомогою KEDA спільно з його [`Cron` scaler](https://keda.sh/docs/latest/scalers/cron/). Scaler `Cron` дозволяє вам визначати розклади (і часові пояси) для масштабування ваших робочих навантажень вгору чи вниз.

## Масштабування інфраструктури кластера {#scaling-cluster-infrastructure}

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

Масштабування інфраструктури кластера, зазвичай, передбачає додавання або видалення <a class='glossary-tooltip' title='Вузол — це робоча машина в Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/architecture/nodes/' target='_blank' aria-label='вузлів'>вузлів</a>. Дивіться [автомасштабування Вузлів](/docs/concepts/cluster-administration/node-autoscaling/) для отримання додаткової інформації.

## Що далі

- Дізнайтеся більше про горизонтальне масштабування
  - [Масштабування StatefulSet](/docs/tasks/run-application/scale-stateful-set/)
  - [Посібник по HorizontalPodAutoscaler](/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/)
- [Зміна розміру ресурсів контейнера на місці](/docs/tasks/configure-pod-container/resize-container-resources/)
- [Автомасштабування служби DNS в кластері](/docs/tasks/administer-cluster/dns-horizontal-autoscaling/)
- [Автомасштабування Вузлів](/docs/concepts/cluster-administration/node-autoscaling/)
