Перейти к содержанию

s4e00

Подготовка лаборатории

Это демо версия первого урока, полная версия урока доступна при оформлении подписки.

Мы с тобой уже достаточно взрослые люди, поэтому не будем использовать поделки вида k3s, rancher и т.п. байду. Сразу сделаем правильно и отказоустойчиво. Настоятельно рекомендую заниматься на локальных виртуалках. Сердцем кластера мы сделаем ванильный kubernetes, который установим через kubeadm.

Важное уточнение! Если вздумал использовать minikube — сразу нет. Он не подойдет.

Для кластера мы поднимем 3 control ноды и 3 worker ноды. Как в лучших домах. По начинке смотри сам, если оперативка и процессор тащит, можешь делать от 4 CPU и 4 RAM на каждую машину. Я же начну с 2 CPU и 2 RAM, там уже по ситуации заскейлим если что-то жирное нужно будет погонять. Итого тебе понадобится 6 виртуалок.

Зачем 3 control ноды? Мы будем делать keepalived чтобы при отказе одной контрольной ноды, у нас все продолжало работать. Но если тебе это не нужно, можешь сделать конфиг 1 control + 2 worker.

Главное правило — кластер из control нод должен быть не четным. Кворум, все дела.

Кубер я буду поднимать в Proxmox, на обычных виртуальных машинах с Ubuntu 24.04 LTS, контейнеры в роде LXC для наших целей не подойдут. Нужны именно полноценные виртуальные сервера. Если денег много, можешь в облаке всё это развернуть.

Дополнительно тебе понадобится локальный DNS сервер и NFS сервер. DNS можешь поднять на мощностях PI-Hole либо Technitium. Если у тебя есть microtik, то в нем есть встроенный DNS сервер, тебе его будет достаточно. DNS нужен, чтобы не парится с айпишниками, да и CNAME нам сгодится. Но если уверен в своих силах, можешь обойтись без DNS сервера. Но настоятельно рекомендую поднять. У меня сейчас работает technitium, про него я писал тут.

А NFS сервер сделай на какой-нибудь отдельной виртуалке, он нам понадобится в будущем для Persistent volume. Я для этих целей буду использовать внешний TrueNAS, он умеет шарить папки по NFS протоколу. А ты сам придумай, как и на чём это реализовать.

Если ты дошел до этой темы, то вполне можешь сам поднять все эти штуки. Ну а если не можешь, но очень хочется, всё это есть в гугле, ну или на крайний случай спроси у ИИ.

Поехали. Будет муторно, долго, но к цели придём. Наберись терпения.

Первым шагом твоя задача будет раскатить 3 виртуальных сервера на Ubuntu 24. Берем 2 CPU / 2 RAM / 50 SSD. Диск можешь сделать побольше, если позволяют ресурсы.

Имена серверам я дал такие:

Это мастер (контрольные) узлы, из них мы будем делать HA кластер на базе (keepalived + haproxy) .

m1.factory.local
m2.factory.local
m3.factory.local

Эти имена пропиши в своём DNS сервере и направь на нужные IP адреса. Попингуй со своей машины по этим именам, убедись что всё подхватилось и заработало.

На каждом сервере прописываем hostname:

sudo hostnamectl set-hostname m1.factory.local

Не забываем менять m1 в зависимости от сервера. Этот пункт не всегда является обязательным, но порой на моменте установки ОС ты можешь ошибиться и прописать что-то другое.

Дальше на каждом из серверов прописываем адрес нашего локального DNS:

sudo rm /etc/resolv.conf
sudo vim /etc/resolv.conf

И прописываем DNS сервера (у тебя будут другие айпишники):

nameserver 192.168.10.7
nameserver 192.169.10.130

По необходимости закидываешь SSH ключи, чтобы тебе было комфортнее подключаться к серверам и работать с ними. Как это сделать, ты тоже уже должен это знать. Но если не знаешь, идешь сюда и ищешь по тегу #linuxfactory.

Если клонировал машины, как я, то не забудь на клонах сделать так:

sudo rm /etc/machine-id
sudo systemd-machine-id-setup
sudo ln -sf /etc/machine-id /var/lib/dbus/machine-id
reboot

Иначе машины у тебя получат одинаковые IP адреса и возникнет коллизия. Ну и hostname не забудь поменять при необходимости.

Такс, с подготовкой закончили. У нас под рукой 3 сервера, всё везде пингуется по именам, всё везде доступно.

Прям новогодняя ёлка, между серверами у меня также проходят пинги по именам.

В Proxmox получилось так:

В DNS сервере это выглядит так:

Поднимаем haproxy + keepalived

Эта штука нам потребуется для отказоустойчивости, если один из контрольных серверов выходит из строя, то API кубера, будет все равно доступно. Потому что мы подняли аж 3 таких сервера. Ну и будет дополнительный IP адрес (VIP = Virtual IP Address), который автоматически переключается на другие контрольные ноды, при отказе одной из них. **Схема классическая:**

🔒 Полная версия урока доступна по подписке.