Setup Kubernetes Cluster Using Kubeadm
На каждую 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: