|
#!/usr/bin/env bash |
|
|
|
# Список вузлів |
|
NODES=(k8s-control k8s-worker-1 k8s-worker-2) |
|
|
|
echo "=== Починаємо підготовку всіх вузлів Kubernetes ===" |
|
|
|
############################################################################### |
|
# 1. ОНОВЛЕННЯ СИСТЕМИ |
|
############################################################################### |
|
echo "=== [1/7] Оновлення системи на всіх вузлах ===" |
|
for NODE in "${NODES[@]}"; do |
|
multipass exec $NODE -- bash -c " |
|
sudo apt-get update && |
|
sudo apt-get upgrade -y |
|
" |
|
done |
|
|
|
############################################################################### |
|
# 2. ВИМКНЕННЯ FIREWALL (спрощена конфігурація) |
|
############################################################################### |
|
echo "=== [2/7] Вимкнення firewall на всіх вузлах ===" |
|
for NODE in "${NODES[@]}"; do |
|
multipass exec $NODE -- sudo ufw disable |
|
done |
|
|
|
############################################################################### |
|
# 3. ЗАВАНТАЖЕННЯ НЕОБХІДНИХ МОДУЛІВ ЯДРА |
|
############################################################################### |
|
echo "=== [3/7] Налаштування kernel-модулів ===" |
|
for NODE in "${NODES[@]}"; do |
|
multipass exec $NODE -- bash -c " |
|
echo -e 'overlay\nbr_netfilter' | sudo tee /etc/modules-load.d/k8s.conf |
|
sudo modprobe overlay |
|
sudo modprobe br_netfilter |
|
" |
|
done |
|
|
|
############################################################################### |
|
# 4. НАЛАШТУВАННЯ мережевих параметрів |
|
############################################################################### |
|
echo "=== [4/7] Налаштування sysctl параметрів ===" |
|
for NODE in "${NODES[@]}"; do |
|
multipass exec $NODE -- bash -c " |
|
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf |
|
net.bridge.bridge-nf-call-iptables = 1 |
|
net.bridge.bridge-nf-call-ip6tables = 1 |
|
net.ipv4.ip_forward = 1 |
|
EOF |
|
sudo sysctl --system |
|
" |
|
done |
|
|
|
############################################################################### |
|
# 5. ВСТАНОВЛЕННЯ containerd |
|
############################################################################### |
|
echo "=== [5/7] Встановлення containerd ===" |
|
for NODE in "${NODES[@]}"; do |
|
multipass exec $NODE -- sudo apt-get install -y containerd |
|
done |
|
|
|
############################################################################### |
|
# 6. НАЛАШТУВАННЯ containerd, SystemdCgroup та CRICTL |
|
############################################################################### |
|
echo "=== [6/7] Налаштування containerd і CRI ===" |
|
for NODE in "${NODES[@]}"; do |
|
multipass exec $NODE -- bash -c " |
|
sudo mkdir -p /etc/containerd |
|
containerd config default | sudo tee /etc/containerd/config.toml |
|
|
|
# Оновлюємо sandbox image |
|
sudo sed -i 's/registry.k8s.io\\/pause:3.8/registry.k8s.io\\/pause:3.10.1/' /etc/containerd/config.toml |
|
|
|
# Увімкнення режиму cgroup через systemd |
|
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml |
|
|
|
# Додаємо конфіг для crictl |
|
sudo tee /etc/crictl.yaml <<EOF |
|
runtime-endpoint: unix:///run/containerd/containerd.sock |
|
image-endpoint: unix:///run/containerd/containerd.sock |
|
timeout: 10 |
|
debug: false |
|
EOF |
|
|
|
sudo systemctl restart containerd |
|
sudo systemctl enable containerd |
|
" |
|
done |
|
|
|
############################################################################### |
|
# 7. ВСТАНОВЛЕННЯ kubeadm, kubelet, kubectl |
|
############################################################################### |
|
echo "=== [7/7] Встановлення Kubernetes компонентів ===" |
|
for NODE in "${NODES[@]}"; do |
|
multipass exec $NODE -- bash -c " |
|
sudo apt-get install -y apt-transport-https ca-certificates curl gpg |
|
|
|
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/deb/Release.key \ |
|
| sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg |
|
|
|
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /' \ |
|
| sudo tee /etc/apt/sources.list.d/kubernetes.list |
|
|
|
sudo apt-get update |
|
sudo apt-get install -y kubelet kubeadm kubectl |
|
sudo apt-mark hold kubelet kubeadm kubectl |
|
sudo systemctl enable kubelet |
|
" |
|
done |
|
|
|
############################################################################### |
|
# 8. ПІДТВЕРДЖЕННЯ ГОТОВНОСТІ |
|
############################################################################### |
|
echo "=== Усі вузли підготовлено! ===" |
|
echo "Можна переходити до ініціалізації control plane." |