Внимание!
Вы можете использовать данный метод установки в официально не поддерживаемые облачные или виртуальные среды с соответствующими рисками, которые вы берете на себя. Например для тестирования host agent агента или облачного/виртуального провайдера.
Шаг 0. Подготовка к инсталляции платформы Боцман
Перед началом инсталляции платформы "Боцман" убедитесь, что выполнены все шаги по подготовке АРМ
Рекомендация
На этом этапе (до установки host-agenta) рекомендуется создать snapshot'ы всех предполагаемых машин управляющего и подчиненного кластеров.
Snapshot'ы будут полезными в случае неудачной попытки установки кластера.
Дополнительные возможности инсталяции
На этой странице начиная с Шага 1 будет представлена обычная инсталяция без существенных модификаций и в качестве первого опыта рекомендуется использовать именно ее, но вы можете дополнительно модифицировать свою инсталяцию:
- Установка кластера с внешний Etcd
- Установка Bootsman 1+1 для тестовых сред
- Расширенные настройки мастер-узлов
- Установка Baremetal без L2
- Зеркалирование образов контейнеров
Шаг 1. Подготовка ОС
Установка пакетов
Подготовьте серверы и установите на них пакеты:
Выполните команду установки пакетов: conntrack ethtool ebtables socat open-iscsi nfs-common
Выполните команду установки пакетов: iscsi-initiator-utils, socat, ebtables, ethtool, conntrack, nfs-utils
Дополнительные сетевые настройки
Создайте юнит для автозапуска настроек
cat <<EOF > /etc/systemd/system/ethtool-conf.service
[Unit]
After=network.target
[Service]
ExecStart=/usr/local/bin/ethtool-conf.sh
[Install]
WantedBy=default.target
EOF
Заметка
Используйте имя вашего основного интерфейса вместо ${INTERFACE_NAME}
cat <<EOF > /usr/local/bin/ethtool-conf.sh
#!/bin/bash
ethtool -K ${INTERFACE_NAME} tx-udp_tnl-csum-segmentation off
ethtool -K ${INTERFACE_NAME} tx-udp_tnl-segmentation off
EOF
chmod 744 /usr/local/bin/ethtool-conf.sh
chmod 664 /etc/systemd/system/ethtool-conf.service
systemctl daemon-reload
systemctl enable ethtool-conf.service --now
Шаг 2. Установка host-agent
Установите host-agent боцмана из комплекта поставки на каждый узел.
Используйте файлы из комплекта поставки в зависимости от используемой ОС:
Произведите установку на каждом узле:
Настройка ролей будущих узлов (Опционально)
Роли
Использование ролей является не обязательным условием для работы платформы - если роли не указать, установщик распределит Kubernetes роли Master и Worker на выделенных ресурсах в случайном порядке.
Плюсы и Минусы использования ролей
+ Управление планировщиком контроллера управления узлами.
Требуется в случаях, когда узлы имеют различные ресурсы, например ГПУ или большое число RAM/HDD/CPU.
- При обновлении потребуется по 1 дополнительному узлу на каждую дополнительную задействованную роль
- Требуется дополнительная настройка агента на каждом узле
- Контроллер не работает в смешанном режиме. Поэтому если вы начали использовать роли, то нужно использовать их везде
Что бы добавить ролевую метку на каждый узел используйте команду:
export ROLE=NODE_ROLE
sudo sed -i "s#ExecStart=\"/usr/bin/byoh-agent\"#ExecStart=\"/usr/bin/byoh-agent\" --label role=${ROLE}#" /usr/lib/systemd/system/host-agent.service
Итоговый сервис должен иметь вид:
[Unit]
Description=host-agent service
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/root/.byoh
ExecStart=/usr/bin/byoh-agent --label role=master
User=root
Group=root
Restart=always
[Install]
WantedBy=multi-user.target
Выполните команду сохранения полученного результата и перезапуска агента:
Шаг 3. Подготовка конфигурационного файла (bootsman.config.yaml)
На АРМ создайте конфиг файл bootsman.config.yaml в той же директории, где расположен инсталлятор-bootsmanctl
kubernetesVersion: KUBERNETES_VERSION (1)
# Раскоментируйте блок в случае airgap установки
# registry:
# username: PRIVATE_REGISTRY_USERNAME (2)
# password: PRIVATE_REGISTRY_PASSWORD (3)
# path: PRIVATE_REGISTRY_URL (4)
# insecure: PRIVATE_REGISTRY_INSECURE (5)
sshAuthorizedKeys: (6)
- ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@bootsman.tech
wait:
clusterCtlTimeout: 30m0s (20)
operationTimeout: 40m0s (21)
operationRetryInterval: 15s (22)
objCreateTimeout: 4m0s (23)
objCreateInterval: 5s (24)
infrastructure:
clusterNetwork:
podCidrBlocks: ["POD_CIDR"] (7)
servicesCidrBlocks: ["SERVICE_CIDR"] (8)
baremetalProxy:
currentIp: CURRENT_MACHINE_IP (9)
currentPort: KUBE_API_PORT (18)
controlPlane:
endpoint:
host: K8SCPIP (10)
port: KUBE_API_PORT (19)
replicas: KCP_REPLICAS (11)
label: CONTROLPLANE_LABEL (12)
kubeletExtraArgs: {}
machineHealthCheck:
timeoutDuration: 10m0s (25)
maxUnhealthy: 100% (26)
workerPool:
replicas: WORKER_REPLICAS (13)
label: WORKER_LABEL (14)
kubeletExtraArgs: {}
machineHealthCheck:
timeoutDuration: 10m0s (27)
maxUnhealthy: 40% (28)
web:
bootstrapPassword: BOOTSMAN_WEB_BOOTSTRAPPASSWORD (15)
hostname: BOOTSMAN_WEB_HOSTNAME (16)
- Версия Kubernetes. Поддерживаемые версии
- Имя пользователя в репозитории образов.
Если установка будет производится online блок registry можно удалить
- Пароль для пользователя в репозитории образов.
Если установка будет производится online блок registry можно удалить
- URL вашего репозитория образов.
Если установка будет производится online блок registry можно удалить
- Это служебный параметр, всегда будет false
- Список ssh-ключей, которые будут добавлены на узлы
- Блок адресов для Pods.
Должен не пересекаться с другими блоками внутри одного Kubernetes кластера и реальными сетями вашей инфраструктуры.
Допустимый размер блока /[1-20]
Пример:
podsCidrBlocks: ["172.20.0.0/16"] - Блок адресов для Service.
Должен не пересекаться с другими блоками внутри одного Kubernetes кластера и реальными сетями вашей инфраструктуры.
Допустимый размер блока /[1-20]
Пример:
servicesCidrBlocks: ["172.21.0.0/16"] - IP адрес АРМ администратора
- IP-адрес балансировщика kube-apiserver для обеспечения отказоустойчивости.
Адрес должен быть свободен и не состоять в dhcp-пулах Подробнее
- Количество узлов с ролью master.
Может принимать значения 3 или 5
- Лейбл должен соответствовать указателю в
host-agent. Указать, в случае настройки агентов с лейблами - Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3
- Лейбл должен соответствовать указателю в
host-agent. Указать, в случае настройки агентов с лейблами - Первоначальный пароль от web портала
- Доменное имя, по которому будет доступен web портал платформы.
Имя должно иметь запись на DNS-сервере.
Нельзя использовать Hosts
Нельзя указывать IP-адрес
- blob
- Порт kube-api. По-умолчанию 6443
- Порт kube-api. По-умолчанию 6443
- Таймаут на все действия bootsmanctl
- Таймаут по-умолчанию для всех операций
- Интервал по-умолчанию для всех операций
- Таймаут на создание или обновление объектов
- Интервал повторной попытки создания или обновления объектов
- Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck.
По-умолчанию 10m
- Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления.
Для узлов с ролью master, значение по-умолчанию 100%.
Для узлов с ролью worker, значение по-умолчанию 40%
- Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck.
По-умолчанию 10m
- Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления.
Для узлов с ролью master, значение по-умолчанию 100%.
Для узлов с ролью worker, значение по-умолчанию 40%
Заметка
Pod и Service cidr можно изменить, следуя правилам: маска блоков должна быть не менее 16, блоки не должны пересекаться
Пример заполненного файла конфигурации:
kubernetesVersion: v1.28.4
registry:
username: demo
password: demo
path: redos-quay.lan/bootsman-v210
insecure: true
sshAuthorizedKeys:
- ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@bootsman.tech
wait:
clusterCtlTimeout: 30m0s
operationTimeout: 40m0s
operationRetryInterval: 15s
objCreateTimeout: 4m0s
objCreateInterval: 5s
infrastructure:
clusterNetwork:
podCidrBlocks: ["172.20.0.0/16"]
servicesCidrBlocks: ["172.21.0.0/16"]
baremetalProxy:
currentIp: 10.104.167.234
currentPort: 6443
controlPlane:
endpoint:
host: ""
port: 6443
replicas: 3
kubeletExtraArgs: {}
machineHealthCheck:
timeoutDuration: 10m0s
maxUnhealthy: 40%
workerPool:
replicas: 3
kubeletExtraArgs: {}
machineHealthCheck:
timeoutDuration: 10m0s
maxUnhealthy: 40%
web:
bootstrapPassword: somePassword123$
hostname: bootsman.redos-v21-ag.dev.lan
kubernetesVersion: v1.28.4
sshAuthorizedKeys:
- ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@bootsman.tech
wait:
clusterCtlTimeout: 30m0s
operationTimeout: 40m0s
operationRetryInterval: 15s
objCreateTimeout: 4m0s
objCreateInterval: 5s
infrastructure:
clusterNetwork:
podCidrBlocks: ["172.20.0.0/16"]
servicesCidrBlocks: ["172.21.0.0/16"]
baremetalProxy:
currentIp: 10.104.167.234
currentPort: 6443
controlPlane:
endpoint:
host: 10.104.167.1
port: 6443
replicas: 3
kubeletExtraArgs: {}
machineHealthCheck:
timeoutDuration: 10m0s
maxUnhealthy: 40%
workerPool:
replicas: 3
kubeletExtraArgs: {}
machineHealthCheck:
timeoutDuration: 10m0s
maxUnhealthy: 40%
web:
bootstrapPassword: somePassword123$
hostname: bootsman.redos-v21-ag.dev.lan
Шаг 4. Запуск установки
Заметка
Установка платформы "Боцман" запускается с заранее подготовленного АРМ
Выполните команду запуска процесса установки:
- cluster-name - Имя создаваемого управляющего кластера
Вывод инсталляции должен окончиться так:
В процессе установки кластера будет формироватьсяжурнал событий.
Неудачная инсталляция
В случае, если установка не произвелась или прервалась потребуется сделать еще одну попытку.
Для новой попытки необходимо:
- Откатить машины с помощью snapshot'а или очистить следуя инструкции
- Удалить файлы инсталляции на АРМ администратора
Доступ в интерфейс
Для успешного доступа в интерфейс нужно добавить запись в ваш DNS-сервер.
Запись состоит из двух параметров: IP-адрес одного из узлов роли worker и доменное имя(Оно указывалось в bootsman.config.yaml в виде опции BOOTSMAN_WEB_HOSTNAME).
После добавления записи, произведите вход в web-панель (1)
- Адрес web-панели содержится в опции BOOTSMAN_WEB_HOSTNAME
- Пароль для доступа в web-панель содержится в опции BOOTSMAN_WEB_BOOTSTRAPPASSWORD
Вы авторизовались под пользователем admin. Далее рекомендуем сменить этот пароль с помощью стандартного меню управления пользователями.

