Как установить кластер Kubernetes в Debian 12

Пошаговое руководство на этой странице объяснит вам, как установить кластер Kubernetes в Debian 12/11 с помощью утилиты Kubeadm.

Предварительные условия

  • Минимальная установка Debian 12
  • 2 ЦП/виртуальных ЦП
  • 2 ГБ ОЗУ
  • 20 ГБ свободного места на диске
  • Пользователь Sudo с правами администратора
  • Стабильное подключение к Интернету
  • Убедитесь, что каждый узел может обмениваться данными с другими через надежное сетевое соединение.

Настройка лаборатории

Для демонстрации я использую три системы Debian 12.

  • Мастер-нода (k8s-master) – 192.168.3.10
  • Рабочий узел 1 (k8s-worker01) — 192.168.3.11
  • Рабочий узел 2 (k8s-worker02) — 192.168.3.12

Без дальнейших задержек давайте перейдем к этапам установки Kubernetes Cluster.

1) Установите имя хоста и обновите файл хостов.

Войдите на каждую ноду (master нода и worker ноды) и установите имя хоста с помощью команды hostnamectl.

$ sudo hostnamectl set-hostname "k8s-master.linuxhint.ru"      // Run on master node
$ sudo hostnamectl set-hostname "k8s-worker01.linuxhint.ru" // Run on 1st worker node
$ sudo hostnamectl set-hostname "k8s-worker02.linuxhint.ru" // Run on 2nd worker node

Также добавьте следующие записи в файл /etc/hosts на всех нодах:

192.168.3.10   k8s-master.linuxhint.ru     k8s-master
192.168.3.11 k8s-worker01.linuxhint.ru k8s-worker01
192.168.3.12 k8s-worker02.linuxhint.ru k8s-worker02

2) Отключить своп на всех узлах

Для бесперебойной работы kubelet рекомендуется отключить swap. Выполните следующие команды на главном и рабочих нодах.

$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

3) Установите пакеты curl и gpg.

$ apt install curl gpg -y

4) Установите Containerd Runtime на все узлы.

Containerd — это стандартная среда выполнения контейнеров, поддерживаемая Kubernetes. Итак, установите Containerd на все главные и рабочие ноды.

Перед установкой контейнера установите следующие параметры ядра на всех нодах.

$ cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf 
overlay
br_netfilter
EOF
$ sudo modprobe overlay
$ sudo modprobe br_netfilter
$ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

Чтобы изменения вступили в силу, запустите

$ sudo sysctl --system

Теперь установите conatinerd, выполнив следующую команду apt на всех нодах.

$ sudo apt update
$ sudo apt -y install containerd

Затем настройте контейнер, чтобы он работал с Kubernetes, запустите команду на всех нодах.

$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

Установите для cgroup driver значение systemd на все ноды.

Отредактируйте файл « /etc/containerd/config.toml » и найдите раздел « [plugins».io.containerd.grpc.v1.cri».containerd.runtimes.runc.options] и измените « SystemdCgroup = false» на ‘SystemdCgroup = true ‘

$ sudo vi /etc/containerd/config.toml

Сохраните и выйдите из файла.

Перезапустите и включите службу Containerd на всех узлах

$ sudo systemctl restart containerd
$ sudo systemctl enable containerd

5) Добавьте репозиторий Kubernetes Apt.

В Debian 12 пакеты, связанные с Kubernetes, недоступны в репозиториях пакетов по умолчанию. Нам нужно добавить дополнительный репозиторий Kubernetes apt на всех узлах, запустите

$ echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
$ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

6) Установите инструменты Kubernetes.

Затем установите на все ноды инструменты Kubernetes, включая kubeadm, kubelet и kubectl.

$ sudo apt update
$ sudo apt install kubelet kubeadm kubectl -y
$ sudo apt-mark hold kubelet kubeadm kubectl

7) Установите кластер Kubernetes с помощью Kubeadm.

kubelet больше не поддерживает параметры командной строки (они устарели). Вместо этого я предлагаю создать файл конфигурации, скажем, «kubelet.yaml» со ​​следующим содержимым.

$ nano kubelet.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: "1.28.0" # Replace with your desired version
controlPlaneEndpoint: "k8s-master"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration

Теперь у нас все готово для инициализации кластера Kubernetes, выполните следующую команду только на master ноде:

$ sudo kubeadm init --config kubelet.yaml

Вывод:

Чтобы начать взаимодействовать с кластером, выполните следующие команды на master ноде:

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

Запустите следующую команду kubectl, чтобы получить информацию о нодах и кластере:

$ kubectl get nodes
$ kubectl cluster-info

Вывод вышеуказанных команд

На своих рабочих worker нодах присоедините их к кластеру, выполнив команду, которая отображалась при инициализации главного узла. Это будет выглядеть примерно так: «Присоединение к Kubeadm».

$ sudo kubeadm join k8s-master:6443 --token 21nm87.x1lgd4jf0lqiiiau \
--discovery-token-ca-cert-hash sha256:28b503f1f2a2592678724c482776f04b445c5f99d76915552f14e68a24b78009

Проверьте состояние нод, выполнив следующую команду с master ноды:

$ kubectl get nodes

Чтобы подготовить статус нод, мы должны установить сетевые дополнения POD, такие как Calico или Flannel.

8) Настройка сети Pod с помощью Calico

На master ноде выполните команду ниже, чтобы установить Calico:

$  kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml

Вывод:

Проверьте статус модулей Calico, запустите

$ kubectl get pods -n kube-system

Отлично, теперь еще раз проверьте статус нод

Отлично, приведенное выше подтверждает, что главные и рабочие ноды находятся в состоянии готовности. Теперь мы можем сказать, что наш кластер готов обрабатывать рабочую нагрузку.

Похожие записи