Некоторое время назад ходил на конференцию Deckhouseconf, где рассказывали про Deckhouse.
После той публикации мне из компании Флант написали и предложили всяческую помощь, если я захочу попробовать эту платформу. У неё есть функциональная бесплатная версия, так что мне ещё на конференции захотелось её попробовать. Ничьей помощью я в итоге пользоваться не стал и для чистоты эксперимента всё развернул самостоятельно. Не скажу, что это была простая задача и всё прошло гладко, но лично у меня получилось относительно просто. Расскажу обо всё по порядку.
Сравнение редакций Deckhouse по функциональности и по конкретным модулям. Сходу трудно во всём этом разобраться, поэтому привожу сразу ссылки. Система большая и сложная. В формате заметки не знаю, как всё умещу.
Для установки минимальной конфигурации Deckhouse понадобится управляющий компьютер и хотя бы две ноды - master и worker. Я взял 3 виртуальные машины с Debian 13. Управляющая может быть минимальной конфигурации. У меня заработало с 2CPU, 4GB RAM. А вот рабочие ноды - минимум 4CPU и 8GB RAM. На меньшем установка не пойдёт.
На управляющий компьютер установил Docker и открыл руководство установщика. Достаточно просто запустить контейнер и пройти в браузер:
# docker run --rm --pull always -v $HOME/.d8installer:$HOME/.d8installer -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 registry.deckhouse.ru/deckhouse/installer:latest -r $HOME/.d8installer
В руководстве контейнер биндится на 127.0.0.1. Я убрал это, чтобы получить к установщику доступ по сети. Дальше всё сделал по инструкции. Там ничего сложного:
- выбрал редакцию community;
- сгенерировал ssh ключи;
- добавил 2 ноды, указал ip адреса;
- настройки сети и доменного имени не менял, использовал по умолчанию.
Запустил установщик и сразу получил неведомую ошибку ssh - execute on remote: exit status 127. По смыслу понял, что по ssh какая-то команда не запускалась. Так как это было самое начало, то сразу сообразил, что на узлах не хватает sudo. Может это и было где-то указано в руководстве, но я пропустил, сразу не установил. После того, как сделал это, установка пошла.
На master ноду всё установилось без проблем. А вот с worker опять затык. Установка стоит на 50%, в логах ошибок нет. Просто ничего не идёт. Пошёл на ноду разбираться. Установка организована в привычном мне стиле - куча костылей на bash скриптах, залиты по ssh с мастера. Их там около сотни 😁.
Заметил, что висит в вечном цикле скрипт /var/lib/bashible/bashible-new.sh. Посмотрел его содержимое, запустил сам вручную. Увидел, что он ругается на скрипт 000_discover_node_ip.sh. Посмотрел, что он делает - определяет ip ноды и записывает в текстовый файл. Сам не отрабатывает, ругается на несуществующие команды. Не стал разбираться с ним, просто вручную записал ip адрес ноды в текстовый файл, куда он должен записываться.
После этого установка пошла и успешно завершилась. Я получил настроенную работающую платформу. Сразу сходил в раздел Модули и запустил модуль virtualization. Он позволяет управлять виртуальными машинами.
Кластер после запуска минут 10-15 подтупливал и сыпал ошибками. Потом вроде прочихался и неспешно заработал. К сожалению, ничего толком на нём проверить я не смог. Во-первых, там надо разбираться и всё настраивать, что требует какое-то время. А во-вторых, кластеру надо гораздо больше ресурсов. Того, что дал ему я, едва хватает, чтобы самому шевелиться. Он запускает очень много своих сервисов - запущено 95 своих подов.
В целом, у меня всё получилось. Поднял кластер без посторонней помощи, но помогла чуйка. Посоздавал там поды, replicasets. Посмотрел, как всё работает, управляется. На первый взгляд удобно. Установка как-то костыльно сделана с плохой обратной связью и без моих пинков не завелась.
#kuber #devops