Skip to main content

Установка K8s

                                                                                                                                  

    Install kubeadm #1 Install kubeadm #2 Install kubectl
    Настройка Kubernetes кластера kubeadm (4 ВМ, Ubuntu 24.04)

    Nodes

    VM Role Физ. сервер ВМ Роль IP Сервер 1 vm-01 control-plane 192.168.1.10 Сервер 1 vm-02 worker 192.168.1.11 Сервер 2 vm-03 worker 192.168.1.12 Сервер 2 vm-04 worker 192.168.1.13

    Требуется полная сетевая связность между хостами-гипервизорами.

    Подготовка ОС

    Уникальные hostname / MAC / product_uuid

    sudo hostnamectl set-hostname vm-01       # своё имя на каждой ноде
    ip link                                   # проверка MAC
    sudo cat /sys/class/dmi/id/product_uuid   # проверка uuid

    Прописать /etc/hosts со всеми 4 IP+именами (или настроить DNS).

    Отключение swap

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

    Включение Модулей ядра и sysctl

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    sudo modprobe overlay
    sudo modprobe br_netfilter
    
    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

    Диапазоны открытых портов:
    Control-plane: 6443, 2379-2380, 10250, 10259, 10257
    Workers: 10250, 30000-32767

    Установка containerd (all nodes)
    sudo apt-get update
    sudo apt-get install -y containerd
    
    sudo mkdir -p /etc/containerd
    containerd config default | sudo tee /etc/containerd/config.toml
    sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
    sudo systemctl restart containerd
    sudo systemctl enable containerd
    Установка kubeadm, kubelet, kubectl (all nodes)
    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

    Замените v1.34 на актуальную минорную версию (Kubernetes Releases)

    Инициализация control-plane (vm-01)
    sudo kubeadm init \
      --apiserver-advertise-address=192.168.1.10 \
      --pod-network-cidr=10.244.0.0/16

    Сохраните tokenиз команды kubeadm join ... Повторная генерация: kubeadm token create --print-join-command

    Настройка kubectl (vm-01)
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    Сетевой плагин CNI (vm-01)
    kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

    kubectl get nodes — control-plane должна перейти в Ready

    Подключение workers (vm-02, vm-03, vm-04)
    sudo kubeadm join 192.168.1.10:6443 --token <token> \
      --discovery-token-ca-cert-hash sha256:<hash>
    Проверка кластера (vm-01)
    kubectl get nodes -o wide
    kubectl get pods -A

    Успешный результат
    All NODEs — Ready
    System PODs (coredns, kube-proxy, CNI) — Running

    Для управления с другой машины скопируйте ~/.kube/config с vm-01