Setup Kubernetes Cluster Using Kubeadm: Difference between revisions
Jump to navigation
Jump to search
Blanked the page Tags: Blanking Visual edit |
No edit summary |
||
| Line 1: | Line 1: | ||
На каждую VM: | |||
* CPU: '''2+ vCPU''' (control-plane лучше 2–4) | |||
* RAM: '''min 2GB''', лучше '''4GB''' (control-plane 4–8GB) | |||
* Disk: '''20GB+''' | |||
* Сеть: все VM '''в одной L2 сети''', чтобы они пинговались по <code>172.16.221.0/24</code>. | |||
Важно для клонов VM: | |||
* у каждой ноды должны быть '''уникальные hostname, MAC и product_uuid''' (kubeadm ругается если одинаковые). Проверка: | |||
<syntaxhighlight lang="bash"> | |||
hostname | |||
ip link | grep link/ | |||
sudo cat /sys/class/dmi/id/product_uuid | |||
</syntaxhighlight>(уникальность прямо указана в kubeadm prerequisites | |||
== 1) Присвой имена и пропиши hosts (на ВСЕХ нодах) == | |||
На каждой ноде задай hostname: | |||
'''cp1:'''<syntaxhighlight lang="bash"> | |||
sudo hostnamectl set-hostname cp1 | |||
</syntaxhighlight>'''worker1:'''<syntaxhighlight lang="bash"> | |||
sudo hostnamectl set-hostname worker1 | |||
</syntaxhighlight>'''worker2:'''<syntaxhighlight lang="bash"> | |||
sudo hostnamectl set-hostname worker2 | |||
</syntaxhighlight>'''worker3:'''<syntaxhighlight lang="bash"> | |||
sudo hostnamectl set-hostname worker3 | |||
</syntaxhighlight>На '''всех''' нодах добавь в <code>/etc/hosts</code>:<syntaxhighlight lang="bash"> | |||
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 | |||
</syntaxhighlight>2) Базовая подготовка ОС (на ВСЕХ нодах) | |||
2.1 Отключи swap (обязательно)<syntaxhighlight lang="bash"> | |||
sudo swapoff -a | |||
sudo sed -i '/\sswap\s/s/^/#/' /etc/fstab | |||
</syntaxhighlight>2.2 Включи нужные модули + sysctl<syntaxhighlight lang="bash"> | |||
sudo modprobe overlay | |||
sudo modprobe br_netfilter | |||
sudo tee /etc/modules-load.d/k8s.conf >/dev/null <<'EOF' | |||
overlay | |||
br_netfilter | |||
EOF | |||
</syntaxhighlight>Sysctl:<syntaxhighlight lang="bash"> | |||
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 | |||
</syntaxhighlight>Проверка (ip_forward должен быть 1) <syntaxhighlight lang="bash"> | |||
sysctl net.ipv4.ip_forward | |||
</syntaxhighlight>3) Установка containerd (на ВСЕХ нодах) | |||
3.1 Поставь containerd<syntaxhighlight lang="bash"> | |||
sudo apt-get update | |||
sudo apt-get install -y containerd | |||
</syntaxhighlight>3.2 Сгенерируй конфиг и включи SystemdCgroup<syntaxhighlight lang="bash"> | |||
sudo mkdir -p /etc/containerd | |||
sudo containerd config default | sudo tee /etc/containerd/config.toml >/dev/null | |||
</syntaxhighlight>Открой файл:<syntaxhighlight lang="bash"> | |||
sudo nano /etc/containerd/config.toml | |||
</syntaxhighlight>Найди секцию runc options и поставь: | |||
* для containerd '''1.x''': | |||
<syntaxhighlight lang="bash"> | |||
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] | |||
SystemdCgroup = true | |||
</syntaxhighlight> | |||
* для containerd 2'''.x''': | |||
Revision as of 13:34, 7 January 2026
На каждую 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: