Как стать автором
Обновить

Kubernetes кластер на ВМ Ubuntu

Уровень сложностиСредний

Решил попробовать поднять кластер Kubernetes через VirtualBox используя windows11.

В VirtualBox использовал ubuntu-22.04.2-live-server.

Использовал тип подключения: «Сетевой мост».

Получилось так:
192.168.0.20 - master
192.168.0.21 - node1
192.168.0.22 - node2
192.168.0.23 - node3
192.168.0.24 - node4


Теперь по пунктам, с чего я начинал.

Для удобной работы с ВМ (если это так можно назвать) использовал MobaXterm по ssh подключению.

1) Ставлю статический ip на каждой машине

sudo nano /etc/netplan/00-installer-config.yaml

network:
    version: 2
    ethernets:
        enp0s3:
            dhcp4: no
            addresses: [192.168.0.xx/24]
            gateway4: 192.168.0.1
            nameservers:
                addresses: [8.8.8.8, 8.8.4.4]

Где xx- ip машины

2) Отключаем свап на каждой машине:
sudo swapoff -a

Чтобы после ребута свап не включался, редактируем:
sudo nano /etc/fstab

Комментим последнюю строку, пример:
#UUID=xxxx-xxxx-xxxx-xxxx none swap sw 0 0

3) Обновим файл /etc/hosts, добавив IP-адреса и имена хостов на каждой машине

sudo nano /etc/hosts

Добавляем список хостов:

192.168.0.20 master
192.168.0.21 node1
192.168.0.22 node2
192.168.0.23 node3
192.168.0.24 node4

Получается так:

127.0.0.1 localhost
127.0.1.1 node4

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

192.168.0.20 master
192.168.0.21 node1
192.168.0.22 node2
192.168.0.23 node3
192.168.0.24 node4

4) Установим kubelet, kubeadm и kubectl на всех машинах:

sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /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

5) Ставим Docker на всех машинах:

sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker

6) Меняем настройки ядра на мастере (Без них я получал ошибки при ините):

sudo sysctl net.bridge.bridge-nf-call-iptables=1
sudo sysctl net.ipv4.ip_forward=1

Чтобы сделать эти настройки постоянными, добавьте следующие строки в файл /etc/sysctl.conf:

echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

7) Инициализируем Kubernetes на master-ноде:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

Запишите вывод команды, особенно команду kubeadm join, которая потребуется для подключения остальных нод к кластеру.

8) Настройте kubectl на мастер-ноде:

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

9) Теперь вы должны развернуть установить на кластер плагин CNI (Container Networking Interface )

Я использовал Flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

10) Подключаем рабочие узлы к нашему кластеру:

kubeadm join <master-ip>:<master-port> --token <token> \
        --discovery-token-ca-cert-hash sha256:<hash>

Используем данные которые мы сохранили при ините мастера.

11) Проверяем что все ноды на мастере отображаются:

kubectl get nodes

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.