# Встановлення kubeadm

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

---

<!-- overview -->

<img src="/images/kubeadm-stacked-color.png" align="right" width="150px"></img>

Ця сторінка показує, як встановити інструменти `kubeadm`. Для отримання інформації щодо того, як створити кластер за допомогою kubeadm після виконання цього процесу встановлення, див. сторінку [Створення кластера за допомогою kubeadm](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/).







<div class="version-list">
    <p>
        Інструкція з встановлення стосується Kubernetes v1.36. Якщо ви хочете використовувати іншу версію Kubernetes, перегляньте натомість такі сторінки:
    </p>
    <ul>
        
            
        
            
            <li>
                <a href="https://v1-35.docs.kubernetes.io/uk/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">Встановлення kubeadm (Kubernetes v1.35)</a>
            </li>
            
        
            
            <li>
                <a href="https://v1-34.docs.kubernetes.io/uk/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">Встановлення kubeadm (Kubernetes v1.34)</a>
            </li>
            
        
            
            <li>
                <a href="https://v1-33.docs.kubernetes.io/uk/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">Встановлення kubeadm (Kubernetes v1.33)</a>
            </li>
            
        
            
            <li>
                <a href="https://v1-32.docs.kubernetes.io/uk/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">Встановлення kubeadm (Kubernetes v1.32)</a>
            </li>
            
        
    </ul>
</div>


## Перш ніж ви розпочнете {#before-you-begin}

* У вас має бути сумісний хост на основі Linux. Проєкт Kubernetes надає загальні інструкції для дистрибутивів Linux, зокрема на базі Debian та Red Hat, а також для дистрибутивів без менеджера пакетів.
* 2 ГБ або більше оперативної памʼяті на кожній машині (менше може залишити мало місця для ваших застосунків).
* 2 CPU або більше для машин панелі управління.
* Повноцінне мережеве зʼєднання між усіма машинами в кластері (публічна чи приватна мережа підходить).
* Унікальні імена хостів, MAC-адреси та product_uuid для кожного вузла. Див. [тут](#verify-mac-address) для отримання докладнішої інформації.
* Відкриті певні порти на ваших машинах. Див. [тут](#check-required-ports) для отримання докладнішої інформації.


<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Встановлення за допомогою <code>kubeadm</code> виконується за допомогою бінарних файлів, які використовують динамічне звʼязування та передбачають, що ваша цільова система надає бібліотеку <code>glibc</code>. Це припущення стосується багатьох дистрибутивів Linux (включаючи Debian, Ubuntu, Fedora, CentOS і т. д.), але не завжди відповідає дійсності у випадку власних та легких дистрибутивів, які типово не включають <code>glibc</code>, наприклад, Alpine Linux. Очікується, що дистрибутив включає або <a href="https://wiki.alpinelinux.org/wiki/Running_glibc_programs">шар сумісності</a>, який забезпечує необхідні символи, або <code>glibc</code>.</div>


<!-- steps -->

## Перевірте версію вашої операційної системи {#check-your-os-version}

<div class="alert alert-secondary callout third-party-content" role="note"><strong>Примітка:</strong>&puncsp;Цей розділ містить посилання на проєкти сторонніх розробників, які надають функціонал, необхідний для Kubernetes. Автори проєкту Kubernetes не несуть відповідальності за ці проєкти. Проєкти вказано в алфавітному порядку. Щоб додати проєкт до цього списку, ознайомтеся з <a href="/uk/docs/contribute/style/content-guide/#third-party-content">посібником з контенту</a> перед надсиланням змін. <a href="#third-party-content-disclaimer">Докладніше.</a></div>


<ul class="nav nav-tabs" id="tabs-operating-system-version-check" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-operating-system-version-check-0" role="tab" aria-controls="tabs-operating-system-version-check-0" aria-selected="true">Linux</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-operating-system-version-check-1" role="tab" aria-controls="tabs-operating-system-version-check-1">Windows</a></li></ul>

<div class="tab-content" id="tabs-operating-system-version-check-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-operating-system-version-check-0" role="tabpanel" aria-labelledby="tabs-operating-system-version-check-0-tab" tabindex="operating-system-version-check"><ul>
<li>Проєкт kubeadm підтримує ядра LTS. Дивіться <a href="https://www.kernel.org/category/releases.html">Список ядер LTS</a>.</li>
<li>Ви можете отримати версію ядра за допомогою команди <code>uname -r</code>.</li>
</ul>
<p>Докладнішу інформацію наведено у <a href="/uk/docs/reference/node/kernel-version-requirements/">Вимоги до ядра Linux</a>.</p>
</div><div class="tab-body tab-pane fade"
        id="tabs-operating-system-version-check-1" role="tabpanel" aria-labelledby="tabs-operating-system-version-check-1-tab" tabindex="operating-system-version-check"><ul>
<li>Проєкт kubeadm підтримує останні версії ядра. Список останніх версій ядра наведено у <a href="https://learn.microsoft.com/en-us/windows/release-health/windows-server-release-info">Windows Server Release Information</a>.</li>
<li>Ви можете отримати версію ядра (яку також називають версією ОС) за допомогою команди <code>systeminfo</code>.</li>
</ul>
<p>Докладнішу інформацію наведено у статті <a href="/uk/docs/concepts/windows/intro/#windows-os-version-support">Сумісність версій ОС Windows</a>.</p>
</div></div>


Кластер Kubernetes, створений за допомогою kubeadm, залежить від програмного забезпечення, яке використовує можливості ядра. Це програмне забезпечення включає, але не обмежується <a class='glossary-tooltip' title='Середовище виконання контейнера — це програмне забезпечення, яке відповідає за запуск та виконання контейнерів.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/setup/production-environment/container-runtimes' target='_blank' aria-label='container runtime'>container runtime</a>, <a class='glossary-tooltip' title='Агент, запущений на кожному вузлі кластера. Забезпечує запуск і роботу контейнерів у Podʼах.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/reference/command-line-tools-reference/kubelet' target='_blank' aria-label='kubelet'>kubelet</a> та втулком <a class='glossary-tooltip' title='Втулки мережевого інтерфейсу контейнера (CNI) є типом мережевих втулків, які відповідають специфікації appc/CNI.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/' target='_blank' aria-label='Container Network Interface'>Container Network Interface</a>.

Щоб допомогти вам уникнути несподіваних помилок, спричинених використанням непідтримуваної версії ядра, kubeadm виконує попередню перевірку `SystemVerification`. Ця перевірка не спрацює, якщо версія ядра не підтримується.

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

## Перевірка унікальності MAC-адрес та product_uuid для кожного вузла {#verify-mac-address}

* Ви можете отримати MAC-адресу мережевих інтерфейсів за допомогою команди `ip link` або `ifconfig -a`.
* product_uuid можна перевірити за допомогою команди `sudo cat /sys/class/dmi/id/product_uuid`.

Ймовірно, що апаратні пристрої матимуть унікальні адреси, хоча деякі віртуальні машини можуть мати ідентичні значення. Kubernetes використовує ці значення для унікальної ідентифікації вузлів в кластері. Якщо ці значення не є унікальними для кожного вузла, процес встановлення може [завершитися невдачею](https://github.com/kubernetes/kubeadm/issues/31).

## Перевірка мережевих адаптерів {#check-network-adapters}

Якщо у вас є більше одного мережевого адаптера і компоненти Kubernetes недоступні за стандартним маршрутом, ми рекомендуємо додати IP-маршрут(и), щоб адреси кластера Kubernetes відповідали конкретному адаптеру.

## Перевірка необхідних портів {#check-required-ports}

Ці [необхідні порти](/docs/reference/networking/ports-and-protocols/) повинні бути відкриті для взаємодії компонентів Kubernetes між собою. Ви можете використовувати інструменти, такі як [netcat](https://netcat.sourceforge.net), щоб перевірити, чи відкритий порт. Наприклад:

```shell
nc 127.0.0.1 6443 -zv -w 2
```

Мережевий втулок Podʼа, який ви використовуєте, також може вимагати, щоб певні порти були відкриті. Оскільки це відрізняється для кожного мережевого втулка, будь ласка, перегляньте їх документацію про те, які порти їм потрібні.

## Конфігурація swap {#swap-configuration}

Стандартно kubelet не запускається, якщо на вузлі виявлено swap-памʼять.
Це означає, що swap слід або вимкнути, або дозволити його використання kubelet.

* Щоб дозволити swap, додайте `failSwapOn: false` до конфігурації kubelet або як аргумент командного рядка. Примітка: навіть якщо вказано `failSwapOn: false`, робочі навантаження не матимуть стандартно доступу до swap. Це можна змінити, встановивши параметр `swapBehavior`, знову ж таки в конфігураційному файлі kubelet. Для використання swap, встановіть значення `swapBehavior` інше ніж стандартне налаштування `NoSwap`. Докладніше дивіться у розділі [Управління памʼяттю swap](/docs/concepts/cluster-administration/swap-memory-management).
* Щоб вимкнути swap, можна використовувати команду `sudo swapoff -a` для тимчасового відключення swap. Щоб зробити цю зміну постійною після перезавантаження, переконайтеся, що swap вимкнено у конфігураційних файлах, таких як `/etc/fstab`, `systemd.swap`, залежно від того, як це налаштовано у вашій системі.

## Встановлення середовища виконання контейнерів {#installing-runtime}

Для запуску контейнерів у Pod, Kubernetes використовує <a class='glossary-tooltip' title='Середовище виконання контейнера — це програмне забезпечення, яке відповідає за запуск та виконання контейнерів.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/setup/production-environment/container-runtimes' target='_blank' aria-label='середовище виконання контейнерів'>середовище виконання контейнерів</a>.

Стандартно Kubernetes використовує <a class='glossary-tooltip' title='Протокол для звʼязку між kubelet та локальним середовищем виконання контейнера.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/architecture/cri' target='_blank' aria-label='Container Runtime Interface'>Container Runtime Interface</a> (CRI), щоб взаємодіяти з обраним середовищем.

Якщо ви не вказуєте середовище виконання, `kubeadm` автоматично намагається виявити встановлене середовище виконання контейнерів, скануючи список відомих точок доступу.

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

Дивіться [середовища виконання контейнерів](/docs/setup/production-environment/container-runtimes/) для отримання додаткової інформації.


<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Рушій Docker не має реалізації <a href="/docs/concepts/architecture/cri/">CRI</a>, що є вимогою для роботи контейнерного середовища в Kubernetes. З цього приводу слід встановити додатковий сервіс <a href="https://mirantis.github.io/cri-dockerd/">cri-dockerd</a>.
<code>cri-dockerd</code> — це проєкт, побудований на основі колишньої вбудованої підтримки Docker Engine, яка була <a href="/dockershim">вилучена</a> з kubelet у версії 1.24.</div>


Наведені нижче таблиці містять відомі точки доступу для підтримуваних операційних систем:

<ul class="nav nav-tabs" id="tabs-container-runtime" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-container-runtime-0" role="tab" aria-controls="tabs-container-runtime-0" aria-selected="true">Linux</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-container-runtime-1" role="tab" aria-controls="tabs-container-runtime-1">Windows</a></li></ul>

<div class="tab-content" id="tabs-container-runtime-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-container-runtime-0" role="tabpanel" aria-labelledby="tabs-container-runtime-0-tab" tabindex="container-runtime"><table><caption style="display: none;">Linux container runtimes</caption>
	<thead>
			<tr>
					<th>Середовище виконання</th>
					<th>Шлях до Unix socket</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>containerd</td>
					<td><code>unix:///var/run/containerd/containerd.sock</code></td>
			</tr>
			<tr>
					<td>CRI-O</td>
					<td><code>unix:///var/run/crio/crio.sock</code></td>
			</tr>
			<tr>
					<td>Docker Engine (з cri-dockerd)</td>
					<td><code>unix:///var/run/cri-dockerd.sock</code></td>
			</tr>
	</tbody>
</table>
</div><div class="tab-body tab-pane fade"
        id="tabs-container-runtime-1" role="tabpanel" aria-labelledby="tabs-container-runtime-1-tab" tabindex="container-runtime"><table><caption style="display: none;">Windows container runtimes</caption>
	<thead>
			<tr>
					<th>Середовище виконання</th>
					<th>Шлях до іменованого pipe Windows</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>containerd</td>
					<td><code>npipe:////./pipe/containerd-containerd</code></td>
			</tr>
			<tr>
					<td>Docker Engine (з cri-dockerd)</td>
					<td><code>npipe:////./pipe/cri-dockerd</code></td>
			</tr>
	</tbody>
</table>
</div></div>


## Встановлення kubeadm, kubelet та kubectl {#installing-kubeadm-kubelet-and-kubectl}

Ви повинні встановити ці пакунки на всіх своїх машинах:

* `kubeadm`: команда для ініціалізації кластера.

* `kubelet`: компонент, який працює на всіх машинах у вашому кластері та виконує такі дії, як запуск подів та контейнерів.

* `kubectl`: утиліта командного рядка для взаємодії з вашим кластером.

kubeadm **не буде** встановлювати або керувати `kubelet` або `kubectl` за вас, тому вам потрібно забезпечити відповідність їх версії версії панелі управління Kubernetes, яку ви хочете, щоб `kubeadm` встановив для вас. Якщо цього не зробити, існує ризик змішування версій, що може призвести до непередбачуваної та неправильної роботи. Однак підтримується розбіжність в _одну_ мінорну версію між `kubelet` та панеллю управління, але версія `kubelet` ніколи не повинна перевищувати версію API сервера. Наприклад, `kubelet` версії 1.7.0 буде повністю сумісний з API-сервером версії 1.8.0, але не навпаки.

Щодо інформації про встановлення `kubectl`, див. [Встановлення та налаштування kubectl](/docs/tasks/tools/).

<div class="alert alert-danger" role="note"><h4 class="alert-heading">Попередження:</h4>Ці інструкції виключають усі пакунки Kubernetes з будь-яких оновлень системи. Це через те, що <code>kubeadm</code> та Kubernetes вимагають <a href="/uk/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/">спеціальної уваги під час оновлення</a>.</div>


Докладніше про відмінності версій:

* [Політика версій та відмінностей](/docs/setup/release/version-skew-policy/) Kubernetes
* [Політика відмінностей версій для kubeadm](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#version-skew-policy)

<div class="alert alert-secondary callout note" role="note">
  <strong>Примітка:</strong> Сховища застарілих пакунків (<code>apt.kubernetes.io</code> та <code>yum.kubernetes.io</code>) визнані
<a href="/blog/2023/08/31/legacy-package-repository-deprecation/">застарілими та заморожені станом на 13 вересня 2023</a>.
<strong>Наполегливо рекомендується використання <a href="/blog/2023/08/15/pkgs-k8s-io-introduction/">нових репозиторіїв пакунків, розміщених за адресою <code>pkgs.k8s.io</code></a>,
які є обовʼязковими для встановлення версій Kubernetes, випущених після 13 вересня 2023 року.</strong>
Застарілі репозиторії та їх вміст можуть бути видалені у будь-який момент у майбутньому без попереднього повідомлення.
Нові репозиторії пакунків надають можливість завантаження версій Kubernetes, починаючи з v1.24.0.
</div>



<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Є окремий репозиторій пакунків для кожної мінорної версії Kubernetes. Якщо ви хочете встановити іншу мінорну версію, крім v1.36, див. посібник з встановлення для бажаної мінорної версії.</div>


<ul class="nav nav-tabs" id="tabs-k8s-install" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-k8s-install-0" role="tab" aria-controls="tabs-k8s-install-0" aria-selected="true">Debian-подібні дистрибутиви</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-k8s-install-1" role="tab" aria-controls="tabs-k8s-install-1">Red Hat-подібні дистрибутиви</a></li>
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-k8s-install-2" role="tab" aria-controls="tabs-k8s-install-2">Без менеджера пакунків</a></li></ul>

<div class="tab-content" id="tabs-k8s-install-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-k8s-install-0" role="tabpanel" aria-labelledby="tabs-k8s-install-0-tab" tabindex="k8s-install"><p>Ці інструкції для Kubernetes v1.36.</p>
<ol>
<li>
<p>Оновіть індекс пакунків <code>apt</code> та встановіть пакунки, необхідні для використання репозитарію Kubernetes <code>apt</code>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo apt-get update
</span></span><span class="line"><span class="cl"><span class="c1"># apt-transport-https може бути фіктивним пакунком; якщо це так, ви можете пропустити цей крок</span>
</span></span><span class="line"><span class="cl">sudo apt-get install -y apt-transport-https ca-certificates curl gpg
</span></span></code></pre></div></li>
<li>
<p>Завантажте публічний ключ підпису для репозиторіїв пакунків Kubernetes. Той самий ключ підпису використовується для всіх репозитаріїв, тому ви можете ігнорувати версію в URL:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Якщо теки `/etc/apt/keyrings` не існує, її слід створити до виконання команди curl, див примітку нижче.</span>
</span></span><span class="line"><span class="cl"><span class="c1"># sudo mkdir -p -m 755 /etc/apt/keyrings</span>
</span></span><span class="line"><span class="cl">curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.36/deb/Release.key <span class="p">|</span> sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
</span></span></code></pre></div></li>
</ol>
<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>У випусках старших за Debian 12 та Ubuntu 22.04 теки <code>/etc/apt/keyrings</code> типово не існує, її слід створити до команди curl.</div>
<ol start="3">
<li>
<p>Додайте відповідний репозиторій Kubernetes <code>apt</code>. Зверніть увагу, що цей репозиторій містить пакунки лише для Kubernetes 1.36; для інших мінорних версій Kubernetes вам потрібно змінити мінорну версію Kubernetes в URL так, щоб вона відповідала вашій бажаній мінорній версії (також перевірте, чи ви ознайомились з документацією для версії Kubernetes, яку ви плануєте встановити).</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Це перезаписує будь-яку наявну конфігурацію в /etc/apt/sources.list.d/kubernetes.list</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.36/deb/ /&#39;</span> <span class="p">|</span> sudo tee /etc/apt/sources.list.d/kubernetes.list
</span></span></code></pre></div></li>
<li>
<p>Оновіть індекс пакунків <code>apt</code>, встановіть kubelet, kubeadm та kubectl, та зафіксуйте їх версію:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo apt-get update
</span></span><span class="line"><span class="cl">sudo apt-get install -y kubelet kubeadm kubectl
</span></span><span class="line"><span class="cl">sudo apt-mark hold kubelet kubeadm kubectl
</span></span></code></pre></div></li>
<li>
<p>(Опціонально) Увімкніть kubelet перед запуском kubeadm:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now kubelet
</span></span></code></pre></div></li>
</ol>
</div><div class="tab-body tab-pane fade"
        id="tabs-k8s-install-1" role="tabpanel" aria-labelledby="tabs-k8s-install-1-tab" tabindex="k8s-install"><ol>
<li>
<p>Встановіть SELinux у режим <code>permissive</code>:</p>
<p>Ці інструкції для Kubernetes 1.36.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Встановити SELinux у режим `permissive` (фактично відключити його)</span>
</span></span><span class="line"><span class="cl">sudo setenforce <span class="m">0</span>
</span></span><span class="line"><span class="cl">sudo sed -i <span class="s1">&#39;s/^SELINUX=enforcing$/SELINUX=permissive/&#39;</span> /etc/selinux/config
</span></span></code></pre></div></li>
</ol>
<div class="alert alert-caution" role="note"><h4 class="alert-heading">Увага:</h4><ul>
<li>Встановлення SELinux у режим <code>permissive</code> за допомогою виконання <code>setenforce 0</code> та <code>sed ...</code> фактично його вимикає. Це необхідно для того, щоб дозволити контейнерам отримувати доступ до файлової системи хосту, наприклад, деякі мережеві застосунки кластера вимагають цього. Ви повинні зробити це до тих пір, поки підтримка SELinux не буде покращена в kubelet.</li>
<li>Ви можете залишити увімкненим SELinux, якщо ви знаєте, як його налаштувати, але це може вимагати налаштувань, які не підтримуються kubeadm.</li>
</ul>
</div>
<ol start="2">
<li>
<p>Додайте репозиторій Kubernetes <code>yum</code>. Параметр <code>exclude</code> в визначенні репозиторію забезпечує, що пакунки, повʼязані з Kubernetes, не оновлюються при виконанні <code>yum update</code>, оскільки є спеціальна процедура, якої слід дотримуватися для оновлення Kubernetes. Зверніть увагу, що цей репозиторій має пакунки лише для Kubernetes v1.36; для інших мінорних версій Kubernetes вам потрібно змінити мінорну версію Kubernetes в URL так, щоб вона відповідала вашій бажаній мінорній версії (також перевірте, чи ви ознайомились з документацією для версії Kubernetes, яку ви плануєте встановити).</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Це перезаписує будь-яку існуючу конфігурацію в /etc/yum.repos.d/kubernetes.repo</span>
</span></span><span class="line"><span class="cl">cat <span class="s">&lt;&lt;EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
</span></span></span><span class="line"><span class="cl"><span class="s">[kubernetes]
</span></span></span><span class="line"><span class="cl"><span class="s">name=Kubernetes
</span></span></span><span class="line"><span class="cl"><span class="s">baseurl=https://pkgs.k8s.io/core:/stable:/v1.36/rpm/
</span></span></span><span class="line"><span class="cl"><span class="s">   enabled=1
</span></span></span><span class="line"><span class="cl"><span class="s">   gpgcheck=1
</span></span></span><span class="line"><span class="cl"><span class="s">   gpgkey=https://pkgs.k8s.io/core:/stable:/v1.36/rpm/repodata/repomd.xml.key
</span></span></span><span class="line"><span class="cl"><span class="s">   exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
</span></span></span><span class="line"><span class="cl"><span class="s">   EOF</span>
</span></span></code></pre></div></li>
<li>
<p>Встановіть kubelet, kubeadm та kubectl, та активуйте kubelet:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo yum install -y kubelet kubeadm kubectl --disableexcludes<span class="o">=</span>kubernetes
</span></span></code></pre></div><p>Для систем з DNF:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo yum install -y kubelet kubeadm kubectl --setopt<span class="o">=</span><span class="nv">disable_excludes</span><span class="o">=</span>kubernetes
</span></span></code></pre></div></li>
<li>
<p>(Опціонально) Увімкніть kubelet перед запуском kubeadm:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now kubelet
</span></span></code></pre></div></li>
</ol>
</div><div class="tab-body tab-pane fade"
        id="tabs-k8s-install-2" role="tabpanel" aria-labelledby="tabs-k8s-install-2-tab" tabindex="k8s-install"><p>Встановіть втулки CNI (необхідно для більшості мережевих підсистем):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">CNI_PLUGINS_VERSION</span><span class="o">=</span><span class="s2">&#34;v1.3.0&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">ARCH</span><span class="o">=</span><span class="s2">&#34;amd64&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">DEST</span><span class="o">=</span><span class="s2">&#34;/opt/cni/bin&#34;</span>
</span></span><span class="line"><span class="cl">sudo mkdir -p <span class="s2">&#34;</span><span class="nv">$DEST</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">curl -L <span class="s2">&#34;https://github.com/containernetworking/plugins/releases/download/</span><span class="si">${</span><span class="nv">CNI_PLUGINS_VERSION</span><span class="si">}</span><span class="s2">/cni-plugins-linux-</span><span class="si">${</span><span class="nv">ARCH</span><span class="si">}</span><span class="s2">-</span><span class="si">${</span><span class="nv">CNI_PLUGINS_VERSION</span><span class="si">}</span><span class="s2">.tgz&#34;</span> <span class="p">|</span> sudo tar -C <span class="s2">&#34;</span><span class="nv">$DEST</span><span class="s2">&#34;</span> -xz
</span></span></code></pre></div><p>Визначте теку для завантаження файлів команд:</p>
<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Змінна <code>DOWNLOAD_DIR</code> повинна бути встановлена на теку з правами на запис. Якщо ви використовуєте Flatcar Container Linux, встановіть <code>DOWNLOAD_DIR=&quot;/opt/bin&quot;</code>.</div>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">DOWNLOAD_DIR</span><span class="o">=</span><span class="s2">&#34;/usr/local/bin&#34;</span>
</span></span><span class="line"><span class="cl">sudo mkdir -p <span class="s2">&#34;</span><span class="nv">$DOWNLOAD_DIR</span><span class="s2">&#34;</span>
</span></span></code></pre></div><p>Встановіть crictl (необхідно для взаємодії з Container Runtime Interface (CRI), необовʼязково для kubeadm):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">CRICTL_VERSION</span><span class="o">=</span><span class="s2">&#34;v1.31.0&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">ARCH</span><span class="o">=</span><span class="s2">&#34;amd64&#34;</span>
</span></span><span class="line"><span class="cl">curl -L <span class="s2">&#34;https://github.com/kubernetes-sigs/cri-tools/releases/download/</span><span class="si">${</span><span class="nv">CRICTL_VERSION</span><span class="si">}</span><span class="s2">/crictl-</span><span class="si">${</span><span class="nv">CRICTL_VERSION</span><span class="si">}</span><span class="s2">-linux-</span><span class="si">${</span><span class="nv">ARCH</span><span class="si">}</span><span class="s2">.tar.gz&#34;</span> <span class="p">|</span> sudo tar -C <span class="nv">$DOWNLOAD_DIR</span> -xz
</span></span></code></pre></div><p>Встановіть <code>kubeadm</code>, <code>kubelet</code> та додайте службу <code>kubelet</code> systemd:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">RELEASE</span><span class="o">=</span><span class="s2">&#34;</span><span class="k">$(</span>curl -sSL https://dl.k8s.io/release/stable.txt<span class="k">)</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">ARCH</span><span class="o">=</span><span class="s2">&#34;amd64&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> <span class="nv">$DOWNLOAD_DIR</span>
</span></span><span class="line"><span class="cl">sudo curl -L --remote-name-all https://dl.k8s.io/release/<span class="si">${</span><span class="nv">RELEASE</span><span class="si">}</span>/bin/linux/<span class="si">${</span><span class="nv">ARCH</span><span class="si">}</span>/<span class="o">{</span>kubeadm,kubelet<span class="o">}</span>
</span></span><span class="line"><span class="cl">sudo chmod +x <span class="o">{</span>kubeadm,kubelet<span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">RELEASE_VERSION</span><span class="o">=</span><span class="s2">&#34;v0.16.2&#34;</span>
</span></span><span class="line"><span class="cl">curl -sSL <span class="s2">&#34;https://raw.githubusercontent.com/kubernetes/release/</span><span class="si">${</span><span class="nv">RELEASE_VERSION</span><span class="si">}</span><span class="s2">/cmd/krel/templates/latest/kubelet/kubelet.service&#34;</span> <span class="p">|</span> sed <span class="s2">&#34;s:/usr/bin:</span><span class="si">${</span><span class="nv">DOWNLOAD_DIR</span><span class="si">}</span><span class="s2">:g&#34;</span> <span class="p">|</span> sudo tee /usr/lib/systemd/system/kubelet.service
</span></span><span class="line"><span class="cl">sudo mkdir -p /usr/lib/systemd/system/kubelet.service.d
</span></span><span class="line"><span class="cl">curl -sSL <span class="s2">&#34;https://raw.githubusercontent.com/kubernetes/release/</span><span class="si">${</span><span class="nv">RELEASE_VERSION</span><span class="si">}</span><span class="s2">/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf&#34;</span> <span class="p">|</span> sed <span class="s2">&#34;s:/usr/bin:</span><span class="si">${</span><span class="nv">DOWNLOAD_DIR</span><span class="si">}</span><span class="s2">:g&#34;</span> <span class="p">|</span> sudo tee /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
</span></span></code></pre></div><div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Зверніться до приміток в розділі <a href="#before-you-begin">Перш ніж ви розпочнете</a> для дистрибутивів Linux, які типово не містять <code>glibc</code>.</div>
<p>Встановіть <code>kubectl</code>, відповідно до інструкцій на сторінці <a href="/uk/docs/tasks/tools/#kubectl">Встановлення інструментів</a>.</p>
<p>Опціонально, увімкніть службу <code>kubelet</code> перед запуском <code>kubeadm</code>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now kubelet
</span></span></code></pre></div><div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Дистрибутив Flatcar Container Linux монтує теку <code>/usr</code> як файлову систему тільки для читання. Перед ініціалізацією кластера вам потрібно виконати додаткові кроки для налаштування теки для запису. Див. <a href="/uk/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/#usr-mounted-read-only">Посібник з усунення несправностей kubeadm</a>, щоб дізнатися, як налаштувати теку для запису.</div>
</div></div>


Kubelet тепер перезавантажується кожні кілька секунд, чекаючи в циклі crashloop на вказівки від kubeadm.

## Налаштування драйвера cgroup {#configure-a-cgroup-driver}

Як середовище виконання контейнерів, так і kubelet мають властивість, відому як ["cgroup driver"](/docs/setup/production-environment/container-runtimes/#cgroup-drivers), яка є важливою для управління cgroup на машинах з операційною системою Linux.

<div class="alert alert-danger" role="note"><h4 class="alert-heading">Попередження:</h4><p>Обовʼязково встановлюйте спільний драйвер cgroup для середовища виконання контейнерів та kubelet, інакше процес kubelet завершиться із помилкою.</p>
<p>Докладніше дивіться в розділі <a href="/uk/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/">Налаштування драйвера cgroup</a>.</p>
</div>


## Розвʼязання проблем {#troubleshooting}

Якщо у вас виникають труднощі з kubeadm, будь ласка, звертайтеся до наших [документів щодо розвʼязання проблем](/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/).

## Що далі

* [Створення кластера за допомогою kubeadm](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/)
