Setup Kubernetes Cluster Using Kubeadm

From wiki.baghirzade.pro
Revision as of 13:34, 7 January 2026 by Sadmin (talk | contribs)
Jump to navigation Jump to search

На каждую VM:

  • CPU: 2+ vCPU (control-plane лучше 2–4)
  • RAM: min 2GB, лучше 4GB (control-plane 4–8GB)
  • Disk: 20GB+
  • Сеть: все VM в одной L2 сети, чтобы они пинговались по 172.16.221.0/24.

Важно для клонов VM:

  • у каждой ноды должны быть уникальные hostname, MAC и product_uuid (kubeadm ругается если одинаковые). Проверка:
hostname
ip link | grep link/
sudo cat /sys/class/dmi/id/product_uuid

(уникальность прямо указана в kubeadm prerequisites

1) Присвой имена и пропиши hosts (на ВСЕХ нодах)

На каждой ноде задай hostname:

cp1:

sudo hostnamectl set-hostname cp1

worker1:

sudo hostnamectl set-hostname worker1

worker2:

sudo hostnamectl set-hostname worker2

worker3:

sudo hostnamectl set-hostname worker3

На всех нодах добавь в /etc/hosts:

sudo tee -a /etc/hosts >/dev/null <<'EOF'
172.16.221.10 cp1
172.16.221.11 worker1
172.16.221.12 worker2
172.16.221.13 worker3
EOF

2) Базовая подготовка ОС (на ВСЕХ нодах) 2.1 Отключи swap (обязательно)

sudo swapoff -a
sudo sed -i '/\sswap\s/s/^/#/' /etc/fstab

2.2 Включи нужные модули + sysctl

sudo modprobe overlay
sudo modprobe br_netfilter

sudo tee /etc/modules-load.d/k8s.conf >/dev/null <<'EOF'
overlay
br_netfilter
EOF

Sysctl:

sudo tee /etc/sysctl.d/k8s.conf >/dev/null <<'EOF'
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sudo sysctl --system

Проверка (ip_forward должен быть 1)

sysctl net.ipv4.ip_forward

3) Установка containerd (на ВСЕХ нодах) 3.1 Поставь containerd

sudo apt-get update
sudo apt-get install -y containerd

3.2 Сгенерируй конфиг и включи SystemdCgroup

sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml >/dev/null

Открой файл:

sudo nano /etc/containerd/config.toml

Найди секцию runc options и поставь:

  • для containerd 1.x:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  SystemdCgroup = true
  • для containerd 2.x: