Системные требования

Прежде чем устанавливать кластер, убедитесь, что ваше железо соответствует требованиям. Хорошая новость: для домашнего Kubernetes они весьма скромные. Плохая новость: если не уложиться в минимум по памяти, кластер будет падать самыми неочевидными способами.

Содержание

Общие требования к узлам

Вот сводная таблица. «Минимум» — кластер установится и будет работать, но впритык. «Рекомендация» — комфортная работа с запасом на десятки сервисов.

Ресурс Control-plane (минимум) Control-plane (рекомендация) Worker (минимум) Worker (рекомендация)
Процессор 2 ядра / 2 потока 4 ядра / 8 потоков 2 ядра / 2 потока 4+ ядра
Оперативная память 2 ГБ (k3s) / 4 ГБ (kubeadm) 8 ГБ 1 ГБ (k3s) / 2 ГБ (kubeadm) 8–16 ГБ
Диск (система) 20 ГБ 40+ ГБ, SSD 20 ГБ 40+ ГБ, SSD
Диск (данные) — по потребности — HDD/SSD от 100 ГБ под тома
Сеть 100 Мбит/с 1 Гбит/с 100 Мбит/с 1 Гбит/с

Если у вас один сервер, совмещающий роли control-plane и worker (типичная схема для дома и поведение k3s по умолчанию), складывайте требования обеих ролей: комфортный минимум такого комбайна — 4 потока ЦП, 8 ГБ ОЗУ и 40 ГБ SSD.

Самая частая ошибка Запуск кластера на машине с 1–2 ГБ ОЗУ «посмотреть, что будет». А будет так: kubelet начнёт выбивать поды из-за нехватки памяти (OOMKilled), etcd будет страдать от медленного диска, и вы получите опыт отладки вместо опыта работы. Начинайте хотя бы с 4 ГБ.

Control-plane

Управляющий узел держит на себе:

В домашнем кластере на 1–5 узлов control-plane обычно потребляет 1–2 ГБ ОЗУ и малую долю одного ядра. Но etcd требует SSD: на HDD кластер будет работать, на microSD — мучиться.

Один узел или три?

В «взрослых» кластерах control-plane делают отказоустойчивым из трёх узлов (кворум etcd). Дома это почти всегда избыточно: один управляющий узел плюс регулярные снапшоты etcd (см. «Советы») покрывают 99% домашних сценариев. Если управляющий узел умер — поды на рабочих узлах продолжат работать, просто вы временно не сможете управлять кластером.

Worker-узлы

Рабочий узел держит:

Правило простое: посчитайте, сколько памяти хотят ваши сервисы, прибавьте 1 ГБ на систему и 20% запаса. Примерный «аппетит» популярных домашних сервисов:

СервисТипичное потребление ОЗУ
Home Assistant300–500 МБ
Jellyfin (без транскодинга)300–600 МБ
Jellyfin (транскодинг видео)1–2 ГБ + нагрузка на ЦП
Nextcloud500 МБ – 1 ГБ
Gitea150–300 МБ
Kubernetes Dashboard100–200 МБ
Prometheus + Grafana1–2 ГБ

Отсюда видно: узел с 8 ГБ ОЗУ спокойно несёт 5–8 таких сервисов одновременно.

Как посчитать память под свой набор сервисов

Практическая формула для планирования узла:

память узла = 1.5 ГБ (система k8s) + сумма сервисов + 25% запаса

Пример: Jellyfin (1 ГБ) + Nextcloud с БД (1.5 ГБ) + Home Assistant (0.5 ГБ) + Gitea (0.3 ГБ) = 3.3 ГБ сервисов. Итого: 1.5 + 3.3 + ~1.2 запаса ≈ 6 ГБ — узел с 8 ГБ ОЗУ справится, но уже без места для мониторинга. С Prometheus (+1.5 ГБ) и будущими экспериментами разумный выбор — 16 ГБ.

Точные цифры появятся только в работе: запустите сервисы, дайте им поработать неделю и посмотрите реальное потребление командой kubectl top pods -A --sort-by=memory (metrics-server входит в состав k3s). Живые измерения всегда точнее любых таблиц.

Дисковая подсистема

Диски в домашнем кластере делятся на две категории:

Совет Не экономьте на системном SSD. Дешёвые no-name SSD и старые microSD-карты имеют привычку умирать внезапно, а вместе с ними умирает etcd, то есть весь кластер. Б/у дата-центровские SATA SSD с большим остатком ресурса — хороший выбор.

Сколько места реально нужно

Что занимает местоТипичный объём
Debian / Ubuntu Server (чистая)3–5 ГБ
k3s + containerd + системные образы2–4 ГБ
Образы ваших приложений10–30 ГБ
etcd и логи1–5 ГБ
Запас под обновления и временные файлы10 ГБ
Итого комфортный минимум40 ГБ

Сеть

Требования к сети скромные, но есть три важных пункта:

  1. Статические IP-адреса для узлов. Узлы должны жить на фиксированных адресах: если IP узла изменится, кластер может потерять его из виду. Настройка описана на странице «Подготовка».
  2. Кабель лучше Wi-Fi. Wi-Fi работает, но домашний кластер по беспроводной сети — источник странных таймаутов. Сервер — по кабелю, одноплатники в идеале тоже.
  3. Гигабит не обязателен, но приятен. Для API и веб-интерфейсов хватит и 100 Мбит/с, но переливка файлов в NFS-хранилище и стриминг медиа заметно веселее на гигабите.

Гигабитная сеть и диски данных

Если планируете NFS-хранилище (страница «Хранение») или медиасервер с 4K-контентом, гигабитный Ethernet становится заметным улучшением: переливка 100 ГБ файлов по 100 Мбит/с займёт около двух с половиной часов, по гигабиту — минут пятнадцать. Проверьте, что и сетевая карта сервера, и роутер, и кабель (категория 5e и выше) гигабитные — скорость цепочки определяется самым медленным звеном. Проверить скорость линка:

sudo ethtool enp3s0 | grep -i speed
# Speed: 1000Mb/s — то, что нужно

Сетевые порты, которые должны быть свободны

Если на узле включён файрвол (или узлы стоят в разных сетях), между ними должны быть открыты порты Kubernetes. Для домашней сети с доверенными машинами проще всего не трогать файрвол вовсе — но понимать, какие порты используются, полезно:

ПортКто слушаетЗачем
6443/tcpkube-apiserverAPI кластера: kubectl, доступ агентов к серверу
10250/tcpkubelet на каждом узлеУправление подами, логи, exec
2379–2380/tcpetcdСостояние кластера (между узлами control-plane)
8472/udpflannel (VXLAN)Оверлейная сеть подов между узлами
51820/udpflannel (WireGuard, если включён)Шифрованный вариант оверлея
30000–32767/tcpNodePort-сервисыДоступ к сервисам извне (см. «Сеть»)
53/tcp и 53/udpCoreDNSDNS внутри кластера

На одноузловом кластере всё это работает локально, и о портах можно не думать вовсе.

Проверка поддержки виртуализации

Самому Kubernetes аппаратная виртуализация не нужна — контейнеры работают на уровне ядра ОС. Но она понадобится, если вы захотите запускать узлы кластера как виртуальные машины (удобный способ сделать «трёхузловой кластер» на одном мощном сервере) или держать рядом с k8s классическую виртуализацию (Proxmox).

Проверить, что виртуализация включена в BIOS (VT-x для Intel, AMD-V для AMD):

# должна быть строка с vmx (Intel) или svm (AMD)
grep -E -c "(vmx|svm)" /proc/cpuinfo
# 0 = виртуализация выключена или не поддерживается

# подробнее про процессор
lscpu | grep -i virt

Если команда вернула 0 — зайдите в BIOS/UEFI и включите Intel VT-x / AMD-V (в китайских платах на X99 пункт обычно называется «Intel Virtualization Technology» в разделе Advanced → CPU Configuration).

Требования: k3s против kubeadm

Два дистрибутива, которые мы используем на этом сайте, отличаются по «весу»:

Параметр k3s Классический k8s (kubeadm)
Минимум ОЗУ на сервер-узел 512 МБ – 1 ГБ 2 ГБ (реально 4 ГБ)
Минимум ОЗУ на агент-узел 512 МБ 1–2 ГБ
Минимум ЦП 1 ядро 2 ядра
Место на диске ~1 ГБ на бинарники и образы системы ~2–3 ГБ
База состояния Встроенный etcd или SQLite (одиночный узел) Только etcd
Что в комплекте containerd, flannel, Traefik, local-path-provisioner, ServiceLB — из коробки Только база: CNI, Ingress и provisioner ставите сами
Архитектуры x86_64, arm64, armhf x86_64, arm64 и др.

Вывод простой: для дома и слабого железа k3s подходит лучше — он легче, ставится одной командой и несёт всё нужное в комплекте. kubeadm имеет смысл, если цель — именно учиться собирать «ванильный» кластер руками. Оба пути подробно разобраны на странице «Установка».

Примеры готовых конфигураций

КонфигурацияСоставЧто потянет
Минимальная 1 узел: 2 ядра, 4 ГБ, 40 ГБ SSD k3s, 3–5 лёгких сервисов (Gitea, AdGuard, пара своих приложений)
Комфортная 1 узел: 4–6 ядер, 16 ГБ, 128 ГБ SSD + HDD под данные Весь набор со страницы «Примеры» с запасом
Лаборатория 3 узла: мини-ПК по 4 ядра / 16 ГБ каждый Настоящий многоузловой кластер, отказоустойчивость, миграция подов
«На вырост» 1 сервер: 12–14 ядер Xeon, 64 ГБ ECC, 480+ ГБ SSD Всё сразу: сервисы, виртуализация рядом, сборки, базы данных

Операционная система

Все инструкции сайта проверены на:

Также k3s официально поддерживает множество других систем, включая RHEL-подобные и even Raspberry Pi OS. Но для новичка лучше держаться Debian/Ubuntu: все команды на сайте будут совпадать с вашей системой один в один.

Архитектура Инструкции ориентированы на x86_64. Для ARM-одноплатников команды установки k3s совпадают, но образы контейнеров нужно выбирать с поддержкой arm64 — об этом есть замечание на странице «Железо».

Итоговый чек-лист перед установкой

Проверка 1. Память

На единственном узле — от 4 ГБ, лучше 8+. На отдельном control-plane — от 2 ГБ для k3s и от 4 ГБ для kubeadm. Проверить можно командой:

# сколько памяти в системе
free -h

Проверка 2. Диск

Системный раздел — от 40 ГБ, желательно SSD. Смотрим:

# свободное место и тип дисков
df -h /
lsblk -d -o NAME,ROTA,SIZE

В выводе lsblk колонка ROTA = 0 означает SSD, 1 — HDD.

Проверка 3. Сеть

Узел должен иметь статический IP и выход в интернет (для скачивания образов):

# адрес машины и проверка связи
ip -4 addr show
ping -c 3 1.1.1.1

Проверка 4. swap отключён

Kubernetes требует отключённый swap. Как это сделать навсегда — в инструкции «Подготовка», а проверить можно так:

# должно быть пусто / нули
swapon --show
free -h | grep -i swap
Что дальше Железо проверено и соответствует требованиям? Переходите к инструкции «Подготовка» — установим систему и настроим её под кластер.