Для развёртывания отказоустойчивого кластера на основе Kubernetes рассмотрим пример предварительной настройки, в которой используется кластер *.k8s.internal и компьютеры с соответствующими IP-адресами:
главный узел:
k8s-master1.k8s.internal - <IP-адрес master1>;
рабочие узлы:
k8s-worker1.k8s.internal - <IP-адрес worker1>;
k8s-worker2.k8s.internal - <IP-адрес worker2>;
k8s-worker3.k8s.internal - <IP-адрес worker3>;
k8s-worker4.k8s.internal - <IP-адрес worker4>.
Важно. Во избежание ошибки split-brain количество главных узлов должно быть нечётным.
Для предварительной настройки кластера в ОС Astra Linux выполните действия на каждом узле кластера:
Установите дополнительные пакеты apt-transport-https, curl, ca-certificates, gnupg-agent, software-properties-common, open-iscsi:
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
open-iscsi \
software-properties-common
Добавьте ключ репозитория Docker:
curl -fsSL https://download.docker.com/linux/debian/gpg
| sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian buster
stable" | sudo tee /etc/apt/sources.list.d/docker.list
Установите платформу контейнеризации Containerd:
sudo apt-get update
sudo apt-get install containerd.io -y
Установите репозиторий Kubernetes:
mkdir /etc/apt/keyrings/
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/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.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
Скачайте и установите пакет conntrack для kubeadm:
wget http://ftp.de.debian.org/debian/pool/main/c/conntrack-tools/conntrack_1.4.5-2_amd64.deb
dpkg -i conntrack_1.4.5-2_amd64.deb
Обновите список репозиториев и установите компоненты Kubernetes:
apt-get update
apt-get install -y kubelet kubeadm kubectl
Включите плагин cri на сервисе контейнеризации (daemon). Для этого закомментируйте строку в файле /etc/containerd/config.toml:
#disabled_plugins = ["cri"]
Разрешите проброс IPv4-пакетов на ядре:
echo '1' > /proc/sys/net/ipv4/ip_forward
sudo sh -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'
Добавьте дополнительные модули для iptables:
modprobe br_netfilter
sudo sh -c 'echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf'
После выполнения действий предварительная настройка кластера будет выполнена.
Далее установите пакетный менеджер Helm на каждом главном узле и перейдите к инициализации кластера Kubernetes.
Для установки пакетного менеджера Helm на каждом главном узле:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Примечание. Используйте пакетный менеджер Helm версии 3.5 и выше.
См. также:
Подготовка и развёртывание отказоустойчивого кластера на основе Kubernetes | Инициализация кластера Kubernetes