Ссылочный указатель:Заводим домашнюю зверюшку или ХоумЛаба на минималках. Часть 1. Вводная.
Вы тутЗаводим домашнюю зверюшку или ХоумЛаба на минималках. Часть 3. Администрирование ВМ.Заводим домашнюю зверюшку или ХоумЛаба на минималках. Часть 4. Готовим кластер Kubernetes.Заводим домашнюю зверюшку или ХоумЛаба на минималках. Часть 5. Развертываем NFS, PostgreSQL, S3.Заводим домашнюю зверюшку или ХоумЛаба на минималках. Часть там много ещё дальше...
Список используемых терминов:
ПО - программное обеспечение
ВМ - вирутальная машина
ОС - операционная система
K8S - kubernetes
NFS - Network File System
LVM - Logical Volume Manager
УЗ - учётная запись
Итак. Нам нужно некое ПО, которое могло бы помочь нам создавать виртуальные машины. Можно развернуть сервер и клепать ВМки с помощью Vagrant или подобного ПО. Можно развертывать сервисы с помощью docker compose.
Я знаю, что мне нужно будет как минимум два изолированных сервера для kubernetes кластера. Также я хочу развернуть базу данных и NFS хранилище вне кластера k8s, а значит это уже минимум 4 ВМки. А раз мы работаем с виртуальными машинами нам подойдёт гипервизор первого уровня - этакая миниОС, которая управляет виртуальными машинами, дисками, сетевыми интерфейсами и тд. Я буду использовать популярный ProxMox. Заранее оговорюсь, что в качестве целей самообразования мне будет достаточно только части его функционала, а значит сравнивать с его аналогами и делать какие-то выводы я не буду.
Устанавливаем гипервизор
Начнём. Загружаем с https://www.proxmox.com/en/downloads свежий образ ProxMoxVE и записываем образ на флеш накопитель.
Если у Вас основная ОС - Windows, советую писать образ с помощью Rufus. Я поклонник Ventoy, но подготовив флешку с помощью Ventoy и закинув образ на флешку, при инсталляции через раз происходит падение при проверке образа.
UPD. Через месяц после начала написания статьи вышел ProxMox 9.2.1 - он запустился и с Ventoy.
Если вы сидите на *nix - пишите через dd. Вот пример команды:
sudo dd if=/path/to/file.iso of=/dev/sdX bs=1M status=progressНужный флэш диск можно определить командой lsblk.
Также для записи можно воспользоваться Etcher.
Записали образ на накопитель, воткнули накопитель в железку и грузимся с накопителя. Выбираем графический инсталлер. Дальше по шагам:
1. Соглашаемся с правилами использования
Пробуем открыть вебморду гипервизора и проверить что всё фунциклирует: идём на http://192.168.1.30:8006 (адрес интерфейса в локальной сети мы задавали при инсталляции, порт стандартный для ProxMox), пропускаем предупреждение о безопасности (так как http) и видим окно аутентификации ProxMox. Отлично.
Выполняем аутентификацию (логин root, пароль задавали при инсталляции), пропускаем сообщение о подписке и видим вебморду гипервизора в которой слева указан наш датацентр (в случае постройки архитектуры с высокой отказоустойчивостью мы можем прикупить три миниПК и поставить на каждый гипервизор - это будут ноды, а датацентр - это кластер из минимум трёх нод), в нём - одну нашу ноду и созданные гипервизором сеть и два тома - один (local) как директория для размещения в нём образов систем, второй LVM том (lvm-local) как корневая директория для ProxMox. Их размеры мы определяли ранее при инсталляции гипервизора.
Привыкаем к лучшим парктикам и сразу после аутентификации создаём пользователя под которым будем работать. Да, у него будут полномочия администратора, но в случае компрометации нашей учётной записи мы имеем админскую, через которую блокнем нашу УЗ. В случае же увода админской записи - не сделаем уже ничего.
Открываем датацентр, выбираем из списка Permissions --> Groups и создаём группу, в которой будут находится администраторы.
Теперь создаём групповые права. Идём в Permissions и добавляем права администраторов на группу.
Далее идём в пункт Permissions --> Users и создаём своего пользователя.
Выбираем Realm - Proxmox VE authentcation, задаём пароль и указываем нашу группу для админов.
Если всё сделали правильно, то в списке пользователей при выборе своего пользователя и нажатии на кнопку permissions - увидим полный список полномочий.
Выходим из под рута и аутентифицируемся под нашим пользователем. Не забываем при входе указать Proxmox VE authentication method. (про PAM в этой статье, думаю, обсуждение будет лишним)
Проксмокс предоставляет собственный модерируемый репозиторий пакетов, доступ к которому осуществляется по подписке. Безопасность это хорошо, но для нас - излишне, поэтому следующей нашей задачей будет переключение источников пакетов с энтерпрайз на дебиановский репозиторий.
Открываем нашу ноду и запускаем в ней шелл.
В терминале мы отредактируем два источника пакетов и добавим дебиановский:
вводим команду
nano /etc/apt/sources.list.d/pve-enterprise.sourcesнажимаем Enter и вводим строку: Enabled: no.
Нажимаем ctrl-s и ctrl-x для сохранения и выхода.
Повторяем с командой
nano /etc/apt/sources.list.d/ceph.sources
Теперь создаём источник обращающийся к репозиторию Debian:
nano /etc/apt/sources.list.d/proxmox.sourcesоткроется пустой файл в котором вставляем следующее соджержание:
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpgСоздаём файл сочетанием ctrl-s и выходим ctrl-x.
Попробуем обновить список актуальных пакетов и обновить установленные.
Вводим в окно терминала новую команду
apt update && apt upgrade -y(при обновлении возможны запросы действий. Если это заметки к обновлению - например amd драйвера - то достаточно закрыть описание клавишей q. Если что-то другое - необходимо вычитывать что хочет пакет. Как говорится - гугл в помощь - все варианты в статье охватить не смогу)
Если источник репозитория Debian мы указали правильно и отключили источники, доступные по подписке, мы увидим процесс запроса новых версий пакетов с репозитория Debian и обновление уже установленных пакетов.
На общие источники пакетов мы перебрались, но при входе в веб-панель мы будем получать назойливое уведомление - уберём его.
Мы запускали команду на обновление - дождёмся пока система обновит все свои пакеты и выведет приглашение командной строки и скопируем скрипт:
sed -i.backup -z "s/res === null ||\n\s* res === undefined ||\n\s* \!res ||\n\s* res.data.status.toLowerCase() \!== 'active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.serviceПосле выполнения связь потеряется - нужно будет закрыть вкладку с веб-панелью и зайти заново.
Скрипт валиден для версии 9.2 в июне 2026 года. Проверяйте, потому-что есть шанс уронить проксмокс насовсем.
Создаём виртуальные машины
Далее приступим к созданию виртуальных машин.
Прикинем что мы хотим получить от архитектуры. Мы хотим хостить сервисы для использования дома. Сервисы будем развертывать в Kubernetes, но хранение постоянных данных в kubernetes - плохая идея, а значит нам нужны ещё базы данных, S3 хранилище и что-то для хранения разнообразных файлов.
Пока вырисовывается:
Kubernetes кластер из мастер и воркер ноды для размещения в нём сервисов.
Хост под NFS хранилище, в качестве хранилища для томов в Kubernetes (и, возможно, не только kubernetes). Пока думаю здесь же будет расположено и S3 хранилище.
Хост под базы данных, в основном PostgreSQL
Наметки архитектуры прикинули, дальше администрирование.
Мы будем создавать хосты, а если делаем это впервые, то и пересоздавать из-за ошибок. Для автоматизированного и структурированного развертывания ВМ в ProxMox можно использовать Terraform, но в рамках этой статьи мы не будем его использовать (довольно сложно и лень). 4 ВМки сделаем ручками. А вот для автоматизации настройки уже созданного хоста будем использовать Ansible (в следующих главах). С помощью него мы обновим пакеты на всех созданных ВМ, создадим своего пользователя-администратора, чтобы не работать от рута (помним про хорошие практики?), поменяем доступ на ВМ по паролю на доступ по ключу и прокинем публичный ключ.
Но всё это мы будем делать после того, как получим ВМки, а значит возвращаемся к ProxMox. Наши ВМ будут работать под управлением Ubuntu Server (де-факто стандартом является Debian, но там сейчас интересные вещи происходят - в качестве начальника мейнтейнеров назначена женщина индус, да и работать мне привычнее с Ubuntu). Загрузить образ можно тут. На данный момент актуальной является 26.04 LTS (20.07.2026). Выберем наш том для хранения образов для установки операционных систем. Это local. Дальше в списке выбираем пункт ISO Images, указываем путь до образа и нажимаем Upload.
Дальше создадим наши ВМ. Вверху справа нажимаем кнопку Create VM. Оставляем имя ноды и предлагаемый ID ВМки, указываем имя нашей будущей ВМ. Также отметим галочку Advanced внизу справа и в раскрывшихся настройках отметим Start at boot и для ВМ под kubernetes укажем тэг - K8S
Следующая вкладка - OS, выбираем наш образ Ubuntu Server который ранее загружали в ProxMox.
На вкладке System оставляем всё и отмечаем галочку Qemu Agent
Дальше Disks.
Давайте думать. На ВМ будет развертываться мастер нода kubernetes, а значит сами сервисы на неё размещать мы не будем. Значит нам нужно место под образы служебного ПО для мастер ноды, под образы самого ПО, под логи и не забываем саму систему. Под всё это примерно уйдёт 35гб, даём в запас ещё 5гб.
Итого: указываем Disk Size 40GB, всё остальное оставляем по умолчанию.(Рассчитывайте диск с учётом того, что увеличить его в дальнейшем мы сможем, а вот уменьшить уже нет)
Переходим к CPU.
Кол-во сокетов оставляем один, кол-во ядер указываем 3. Как я говорил ранее - сервисы крутить мы на мастер ноде не будем. Под работу кубового API, обслуживание etcd и системных процессов достаточно будет трёх ядер. А то и двух, но возьмём с запасом. Всё остальное оставляем по умолчанию.
Memory.
Указываем 4096 в обоих строках.
Network
Оставляем всё как есть.
Вкладка Confirm
Ознакамливаемся с конфигурацией и отмечаем галочку Start after created.
Нажимаем на Finish внизу справа.
Слева у нашей ноды появится наша созданная ВМ.
Выбираем её, запускаем и переходим в шелл этой ВМ. Увидим стандартное приглашение о инсталляции ОС. Подтверждаем или ждём 15 секунд.
Запустится инсталляция ОС, как если бы мы делали это на обыном ПК с флэшки/диска.
Выбираем язык и раскладку на первых двух шагах (я оставляю English), на третьем шаге ставим ubuntu server (minimized) - пункт отмечаем пробелом. Проприетарные пакеты на данном этапе нам не пригодятся.
Следующим шагом идёт настройка сетевого интерфейса.
По умолчанию адрес присваивается по DHCP. Выбираем автоматически созданный - далее Edit IPv4
IPv4 Method - Manual и указываем адреса в формате CIDR:
Subnet - наша подсеть
Адрес - собственно ip адрес ВМ
Шлюз - Адрес нашего роутера
Name servers - DNS сервера. Я указываю от Google.
Сохраняем и на следующий шаг. Прокси пропускаем.
На следующем шаге нам предлагают выбрать зеркала репозиториев. Мне предложило указать RU зеркала и автоматически проверило доступность, поэтому оставляем его и идём дальше.
Разметка дисков.
Отключим создание томов LVM. Идём дальше и смотрим как нам сконфигурировали диск. Выделяется 1мб под загрузочный раздел и оставшееся место под рут, меня устраивает.
На следующем шаге указываем имя пользователя, имя нашей ВМ - k8s-master, имя учётной записи - vmadmin и пароль.
На следующем шаге пропускаем предложение Ubuntu Pro.
Дальше отмечаем установку OpenSSH server и идём на следующий шаг.
На следующем шаге указываем какие пакеты нам нужно предустановить. Отмечаем только microk8s и подтверждаем выбор.
Работу в Мастере конфигурации сервера мы закончили, ждём установки ОС. Как только видим сверху Installation complete - перезагружаемся с помощью пункта внизу. (не забудьте нажать Enter в диалоговом окне)
Ждём перезапуска ВМ, увидим логи генерации ключей, жмём Enter и видим приглашение консоли.
Аутентифицируемся по имени пользователя которое указывали в Мастере - vmadmin и паролю. Если всё успешно приступаем к созданию следующей ВМ.
Итак. Мастер нода есть, дальше нам нужны:
ВМ под воркер ноду кластера kubernetes
name: k8s-worker, 9 cpu, 16384 ram, disk 80
Также в выборе предустановленного по отмечаем microk8s. В дальнейших ВМ ничего отмечать не нужно.
ВМ под NFS хранилище
name: nfs, 2 cpu 4096 ram, disk 700 gb
ВМ под базы данных
name: databases, 2 cpu 4096 ram, 80gb disk
И ещё 58гб останется в запасе.
На этом первоначальная работа с ProxMox завершена и у нас должно быть 4 виртуальные машины:
k8s-master
k8s-worker
storage
database
Следующая глава - Заводим домашнюю зверюшку или ХоумЛаба на минималках. Часть 3. Администрирование ВМ. в процессе написания

































Комментарии
Мне и Rufus и балена - не раз флешку убивал. Прикольная статья, я все эти названия по отдельности слышал, но вместе никогда ))))
ни разу за пять лет не было
ну есть у меня подозрения на плохие юсб разъемы... маленькие такие подозрения )))