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

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

---

<!-- overview -->

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

<!-- lessoncontent -->

## Цілі

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

## Перш ніж ви розпочнете

<p>Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою <a href="https://minikube.sigs.k8s.io/docs/tutorials/multi_node/">minikube</a> або використовувати одну з цих пісочниць:</p>
<ul>
<li><a href="https://labs.iximiuz.com/playgrounds?category=kubernetes&filter=all">iximiuz Labs</a></li>
<li><a href="https://killercoda.com/playgrounds/scenario/kubernetes">Killercoda</a></li>
<li><a href="https://kodekloud.com/public-playgrounds">KodeKloud</a></li>
</ul>
 
 
 Версія вашого Kubernetes сервера має бути не старішою ніж 1.33.
  <p>Для перевірки версії введіть  <code>kubectl version</code>.</p>


Вам потрібен принаймні один робочий вузол у кластері, який має працювати під керуванням операційної системи Linux. Для цього прикладу необхідно встановити інструмент kubeadm, дотримуючись кроків, описаних у [інструкції з встановлення kubeadm](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm).

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

* `fallocate`
* `mkswap`
* `swapon`

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

* `cryptsetup`

<!-- lessoncontent -->

## Встановлення кластера з підтримкою свопу через kubeadm {#install-a-swap-enabled-cluster-with-kubeadm}

### Створення своп-файлу та активація свопу {#create-a-swap-file-and-turn-swap-on}

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

<ul class="nav nav-tabs" id="tabs-створення-своп-файлу-та-активація-свопу" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-%d1%81%d1%82%d0%b2%d0%be%d1%80%d0%b5%d0%bd%d0%bd%d1%8f-%d1%81%d0%b2%d0%be%d0%bf-%d1%84%d0%b0%d0%b9%d0%bb%d1%83-%d1%82%d0%b0-%d0%b0%d0%ba%d1%82%d0%b8%d0%b2%d0%b0%d1%86%d1%96%d1%8f-%d1%81%d0%b2%d0%be%d0%bf%d1%83-0" role="tab" aria-controls="tabs-створення-своп-файлу-та-активація-свопу-0" aria-selected="true">Налаштування зашифрованого свопу</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-%d1%81%d1%82%d0%b2%d0%be%d1%80%d0%b5%d0%bd%d0%bd%d1%8f-%d1%81%d0%b2%d0%be%d0%bf-%d1%84%d0%b0%d0%b9%d0%bb%d1%83-%d1%82%d0%b0-%d0%b0%d0%ba%d1%82%d0%b8%d0%b2%d0%b0%d1%86%d1%96%d1%8f-%d1%81%d0%b2%d0%be%d0%bf%d1%83-1" role="tab" aria-controls="tabs-створення-своп-файлу-та-активація-свопу-1">Налаштування незашифрованого swap</a></li></ul>

<div class="tab-content" id="tabs-створення-своп-файлу-та-активація-свопу-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-створення-своп-файлу-та-активація-свопу-0" role="tabpanel" aria-labelledby="tabs-створення-своп-файлу-та-активація-свопу-0-tab" tabindex="створення-своп-файлу-та-активація-свопу"><p>Зашифрований своп-файл можна налаштувати так. Зверніть увагу, що цей приклад використовує утиліту <code>cryptsetup</code> (доступна у більшості дистрибутивів Linux).</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Виділення місця та обмеження доступу</span>
</span></span><span class="line"><span class="cl">fallocate --length 4GiB /swapfile
</span></span><span class="line"><span class="cl">chmod <span class="m">600</span> /swapfile
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Створення зашифрованого пристрою на основі виділеного місця</span>
</span></span><span class="line"><span class="cl">cryptsetup --type plain --cipher aes-xts-plain64 --key-size <span class="m">256</span> -d /dev/urandom open /swapfile cryptswap
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Форматування swap-простору</span>
</span></span><span class="line"><span class="cl">mkswap /dev/mapper/cryptswap
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Активація swap для підкачки</span>
</span></span><span class="line"><span class="cl">swapon /dev/mapper/cryptswap
</span></span></code></pre></div></div><div class="tab-body tab-pane fade"
        id="tabs-створення-своп-файлу-та-активація-свопу-1" role="tabpanel" aria-labelledby="tabs-створення-своп-файлу-та-активація-свопу-1-tab" tabindex="створення-своп-файлу-та-активація-свопу"><p>Незашифрований swap-файл можна налаштувати так.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Виділення місця та обмеження доступу</span>
</span></span><span class="line"><span class="cl">fallocate --length 4GiB /swapfile
</span></span><span class="line"><span class="cl">chmod <span class="m">600</span> /swapfile
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Форматування swap-простору</span>
</span></span><span class="line"><span class="cl">mkswap /swapfile
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Активація swap для підкачки</span>
</span></span><span class="line"><span class="cl">swapon /swapfile
</span></span></code></pre></div></div></div>


#### Перевірка, що своп увімкнено {#verify-that-swap-is-enabled}

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

Приклад `swapon -s`:

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

Приклад `free -h`:

```console
               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 при завантаженні {#enable-swap-on-boot}

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

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

### Налаштування kubelet {#set-up-kubelet-configuration}

Після активації своп на вузлі потрібно налаштувати kubelet для його використання. Вам потрібно вибрати [поведінку свопу](/docs/reference/node/swap-behavior/) для цього вузла. Для цього посібника ви налаштуєте поведінку _LimitedSwap_.

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

* встановіть `failSwapOn` на false
* встановіть `memorySwap.swapBehavior` на LimitedSwap

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

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

```shell
systemctl restart kubelet.service
```

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