570просмотров
8 ноября 2025 г.
📷 ФотоScore: 627
Установка Kubernetes: настройка Master Node (гайд от @giftsnat) Шаг 1: Настройка /etc/hosts на каждой виртуалке sudo tee -a /etc/hosts << EOF
10.250.105.20 k8s-ingress
10.250.105.21 k8s-master
10.250.105.22 k8s-worker-1
10.250.105.23 k8s-worker-2
EOF Проверить: ping -c 2 k8s-master
ping -c 2 k8s-worker-1
getent hosts k8s-ingress Шаг 2: Установка Kubernetes компонентов Обновляем систему: sudo apt-get update && sudo apt-get upgrade -y Устанавливаем зависимости: sudo apt-get install -y apt-transport-https ca-certificates curl gpg Создаем директорию для ключей: sudo mkdir -p -m 755 /etc/apt/keyrings Добавляем репозиторий Kubernetes через Яндекс зеркало: curl -fsSL https://mirror.yandex.ru/mirrors/pkgs.k8s.io/core/stable/v1.30/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://mirror.yandex.ru/mirrors/pkgs.k8s.io/core/stable/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list Обновляем и устанавливаем: sudo apt update
sudo apt-get install -y kubelet=1.30.14- kubeadm=1.30.14- kubectl=1.30.14-* Фиксируем версии: sudo apt-mark hold kubelet kubeadm kubectl Включаем kubelet: sudo systemctl enable --now kubelet Шаг 3: Настройка Master-узла (k8s-master) 3.1 Подготовка системы ОТКЛЮЧАЕМ SWAP (обязательно!): sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab Проверяем что swap отключен: free -h 3.2 Настройка containerd Останавливаем сервисы: sudo systemctl stop kubelet
sudo systemctl stop containerd Создаем чистую конфигурацию containerd: sudo mkdir -p /etc/containerd Генерируем базовую конфигурацию: sudo containerd config default | sudo tee /etc/containerd/config.toml Вносим необходимые изменения: sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml Также убедимся, что используется правильный snapshotter: sudo sed -i 's/snapshotter = "overlayfs"/snapshotter = "overlayfs"/' /etc/containerd/config.toml Перезапускаем containerd: sudo systemctl daemon-reload
sudo systemctl start containerd
sudo systemctl status containerd Проверяем что containerd работает: sudo crictl version 3.3 Инициализация кластера Предварительно скачиваем образы (опционально, но рекомендуется): sudo kubeadm config images pull --kubernetes-version=v1.30.14 --image-repository=registry.aliyuncs.com/google_containers Инициализируем кластер: sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=10.250.105.21 \ --control-plane-endpoint=k8s-master \ --upload-certs pod-network-cidr=10.244.0.0/16 - сеть для Pod'ов (Flannel по умолчанию)
apiserver-advertise-address=10.250.105.21 - IP мастера
control-plane-endpoint=k8s-master - DNS имя для доступа к API
upload-certs - автоматическая загрузка сертификатов для добавления нод 3.4 Настройка kubectl Настраиваем доступ для пользователя: mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config Проверяем доступ: kubectl cluster-info
kubectl get nodes 3.5 Установка сетевого плагина Устанавливаем Flannel: kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml Проверяем статус: kubectl get pods -n kube-system -l app=flannel
kubectl get nodes 3.6 Настройка ролей ноды Добавляем роль control-plane для master ноды: kubectl label node k8s-master node-role.kubernetes.io/control-plane=
kubectl label node k8s-master node-role.kubernetes.io/master= Проверяем: kubectl get nodes 3.7 Подготовка к добавлению worker нод Получаем команду для присоединения worker нод: kubeadm token create --print-join-command Сохраняем команду - она понадобится для worker нод #DevOps