Налаштування свопу на вузлах Kubernetes

Ця сторінка містить приклад того, як створити та налаштувати своп на вузлі Kubernetes за допомогою kubeadm.

  • Створити своп на вузлі Kubernetes за допомогою kubeadm.
  • Навчитися налаштовувати як зашифрований, так і незашифрований своп.
  • Навчитися вмикати своп при завантаженні системи.

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

Версія вашого Kubernetes сервера має бути не старішою ніж 1.33.

Для перевірки версії введіть kubectl version.

Вам потрібен принаймні один робочий вузол у кластері, який має працювати під керуванням операційної системи Linux. Для цього прикладу необхідно встановити інструмент kubeadm, дотримуючись кроків, описаних у інструкції з встановлення kubeadm.

На кожному робочому вузлі, де ви будете налаштовувати своп, потрібні такі утиліти:

  • fallocate
  • mkswap
  • swapon

Для зашифрованого свопу (рекомендовано) також потрібен:

  • cryptsetup

Встановлення кластера з підтримкою свопу через kubeadm

Створення своп-файлу та активація свопу

Якщо своп не увімкнено, потрібно створити своп на вузлі. У наступних розділах показано, як створити 4ГіБ своп як у зашифрованому, так і незашифрованому варіанті.

Зашифрований своп-файл можна налаштувати так. Зверніть увагу, що цей приклад використовує утиліту cryptsetup (доступна у більшості дистрибутивів Linux).

# Виділення місця та обмеження доступу
fallocate --length 4GiB /swapfile
chmod 600 /swapfile

# Створення зашифрованого пристрою на основі виділеного місця
cryptsetup --type plain --cipher aes-xts-plain64 --key-size 256 -d /dev/urandom open /swapfile cryptswap

# Форматування swap-простору
mkswap /dev/mapper/cryptswap

# Активація swap для підкачки
swapon /dev/mapper/cryptswap

Незашифрований swap-файл можна налаштувати так.

# Виділення місця та обмеження доступу
fallocate --length 4GiB /swapfile
chmod 600 /swapfile

# Форматування swap-простору
mkswap /swapfile

# Активація swap для підкачки
swapon /swapfile

Перевірка, що своп увімкнено

Перевірити, чи своп увімкнено, можна за допомогою команд swapon -s або free.

Приклад swapon -s:

Filename       Type		Size		Used		Priority
/dev/dm-0      partition 	4194300		0		-2

Приклад free -h:

               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       1.3Gi       249Mi        25Mi       2.5Gi       2.5Gi
Swap:          4.0Gi          0B       4.0Gi

Увімкнення swap при завантаженні

Після налаштування swap, щоб він запускався при завантаженні, зазвичай або створюють systemd-юнит для активації (зашифрованого) swap, або додають рядок типу /swapfile swap swap defaults 0 0 у /etc/fstab.

Використання systemd для активації swap дозволяє затримати запуск kubelet до моменту, коли swap буде доступний, якщо це потрібно. Аналогічно, systemd дозволяє залишати swap активним до завершення роботи kubelet (і, зазвичай, вашого контейнерного рантайму).

Налаштування kubelet

Після активації своп на вузлі потрібно налаштувати kubelet для його використання. Вам потрібно вибрати поведінку свопу для цього вузла. Для цього посібника ви налаштуєте поведінку LimitedSwap.

Знайдіть і відредагуйте файл конфігурації kubelet, а також:

  • встановіть failSwapOn на false
  • встановіть memorySwap.swapBehavior на LimitedSwap
 # цей фрагмент додається у конфігураційний файл kubelet
 failSwapOn: false
 memorySwap:
     swapBehavior: LimitedSwap

Щоб ці налаштування набули чинності, потрібно перезапустити kubelet. Зазвичай це робиться за допомогою команди:

systemctl restart kubelet.service

Ви повинні переконатися, що kubelet тепер працює нормально і що ви можете запускати Podʼи, які використовують своп-памʼять за потреби.

Змінено September 19, 2025 at 11:51 PM PST: [uk] sync upstream (26cb8d29c2)