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

Внимание!

Вы можете использовать данный метод установки в официально не поддерживаемые облачные или виртуальные среды с соответствующими рисками, которые вы берете на себя. Например для тестирования host agent агента или облачного/виртуального провайдера.

Шаг 0. Подготовка к инсталляции платформы Боцман

Перед началом инсталляции платформы "Боцман" убедитесь, что выполнены все шаги по подготовке АРМ

Заметка

Для работы кластера Bootsman c внешним ETCD потребуется дополнительная подготовка. Подробнее

Рекомендация

На этом этапе (до установки host-agenta) рекомендуется создать snapshot'ы всех предполагаемых машин управляющего и подчиненного кластеров.

Snapshot'ы будут полезными в случае неудачной попытки установки кластера.

Шаг 1. Подготовка ОС

Подготовьте серверы и установите на них пакеты:

Выполните команду установки пакетов: conntrack ethtool ebtables socat open-iscsi nfs-common

sudo apt install -y conntrack ethtool ebtables socat open-iscsi nfs-common

Выполните команду установки пакетов: iscsi-initiator-utils, socat, ebtables, ethtool, conntrack, nfs-utils

sudo dnf -y install iscsi-initiator-utils socat ebtables ethtool conntrack nfs-utils
sudo systemctl enable --now iscsid

Выполните команду установки пакетов: conntrack ethtool ebtables socat open-iscsi nfs-common

sudo apt install -y conntrack ethtool ebtables socat open-iscsi nfs-common

Шаг 2. Установка host-agent

Установите host-agent боцмана из комплекта поставки на каждый узел.
Используйте файлы из комплекта поставки в зависимости от используемой ОС:

byoh-agent-version.deb
byoh-agent-version-1.el7.x86_64.rpm
byoh-agent-version.deb

Произведите установку на каждом узле:

sudo dpkg --install /home/bootsman/byoh-agent-version-amd64.deb
sudo rpm -U /home/bootsman/byoh-agent-version-1.el7.x86_64.rpm
sudo dpkg --install /home/bootsman/byoh-agent-version-amd64.deb

Настройка ролей будущих узлов

Роли

Для стабильности и отказоустойчивости кластера рекомендуется ручное назначение трех Master и трех Worker узлов(согласно минимальной конфигурации).

Использование ролей является не обязательным условием для работы платформы - если роли не указать, установщик распределит роли Master и Worker на выделенных ресурсах в случайном порядке.

Внимание!

В случае ручного назначения ролей, в будущем для обновления кластера вам потребуется по 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
Проверьте результат:
cat /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

Выполните команду сохранения полученного результата и перезапуска агента:

systemctl daemon-reload && systemctl restart host-agent

Шаг 3. Подготовка конфигурационного файла (bootsman.config.yaml)

На АРМ создайте конфиг файл bootsman.config.yaml в той же директории, где расположен инсталлятор-bootsmanctl

touch bootsman.config.yaml
И откройте его для редактирования любым текстовом редакторе, например nano:
nano bootsman.config.yaml

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@stsoft.ru
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)
  1. Версия Kubernetes. Поддерживаемые версии
  2. Имя пользователя в репозитории образов.

    Если установка будет производится online блок registry можно удалить

  3. Пароль для пользователя в репозитории образов.

    Если установка будет производится online блок registry можно удалить

  4. URL вашего репозитория образов.

    Если установка будет производится online блок registry можно удалить

  5. Это служебный параметр, всегда будет false
  6. Список ssh-ключей, которые будут добавлены на узлы
  7. Блок адресов для Pods.

    Должен не пересекаться с другими блоками внутри одного Kubernetes кластера.

    Допустимый размер блока /[1-20]

    Пример:

    podsCidrBlocks: ["172.20.0.0/16"]

  8. Блок адресов для Service.

    Должен не пересекаться с другими блоками внутри одного Kubernetes кластера.

    Допустимый размер блока /[1-20]

    Пример:

    servicesCidrBlocks: ["172.21.0.0/16"]

  9. IP адрес АРМ администратора
  10. IP-адрес балансировщика kube-apiserver для обеспечения отказоустойчивости.

    Адрес должен быть свободен и не состоять в dhcp-пулах Подробнее

  11. Количество узлов с ролью master.

    Может принимать значения 3 или 5

  12. Лейбл должен соответствовать указателю в host-agent. Указать, в случае настройки агентов с лейблами
  13. Число узлов в workerpool. Сумма узлов во всех workerpool должна быть >=3
  14. Лейбл должен соответствовать указателю в host-agent. Указать, в случае настройки агентов с лейблами
  15. Первоначальный пароль от web портала
  16. Доменное имя, по которому будет доступен web портал платформы.

    Нельзя указывать IP-адрес

  17. blob
  18. Порт kube-api. По-умолчанию 6443
  19. Порт kube-api. По-умолчанию 6443
  20. Таймаут на все действия bootsmanctl
  21. Таймаут по-умолчанию для всех операций
  22. Интервал по-умолчанию для всех операций
  23. Таймаут на создание или обновление объектов
  24. Интервал повторной попытки создания или обновления объектов
  25. Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck.

    По-умолчанию 10m

    Подробнее

  26. Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления.

    Для узлов с ролью master, значение по-умолчанию 100%.

    Для узлов с ролью worker, значение по-умолчанию 40%

    Подробнее

  27. Время, которое дается узлу на самостоятельное восстановление, прежде чем вмешается MachineHealthCheck.

    По-умолчанию 10m

    Подробнее

  28. Пороговое значение для MachineHealthCheck, при превышении которого не будет выполняться исправления.

    Для узлов с ролью master, значение по-умолчанию 100%.

    Для узлов с ролью worker, значение по-умолчанию 40%

    Подробнее

Заметка

Pod и Service cidr можно изменить, следуя правилам: маска блоков должна быть не менее 16, блоки не должны пересекаться

Пример заполненного файла конфигурации:

kubernetesVersion: v1.28.4
registry:
  username: demo
  password: demo
  path: redos-quay.stsoft.lan/bootsman-v210
  insecure: true
sshAuthorizedKeys:
  - ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@stsoft.ru
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
  label: master
  kubeletExtraArgs: {}
  machineHealthCheck: 
    timeoutDuration: 10m0s
    maxUnhealthy: 40%
workerPool:
  replicas: 3
  label: worker
  kubeletExtraArgs: {}
  machineHealthCheck:
    timeoutDuration: 10m0s
    maxUnhealthy: 40%
web:
  bootstrapPassword: somePassword123$
  hostname: rancher.redos-v21-ag.dev.stsoft.lan
kubernetesVersion: v1.28.4
sshAuthorizedKeys:
  - ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@stsoft.ru
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
  label: master
  kubeletExtraArgs: {}
  machineHealthCheck:
    timeoutDuration: 10m0s
    maxUnhealthy: 40%
workerPool:
  replicas: 3
  label: worker
  kubeletExtraArgs: {}
  machineHealthCheck:
    timeoutDuration: 10m0s
    maxUnhealthy: 40%
web:
  bootstrapPassword: somePassword123$
  hostname: rancher.redos-v21-ag.dev.stsoft.lan

Шаг 4. Запуск установки

Заметка

Установка платформы "Боцман" запускается с заранее подготовленного АРМ

Выполните команду запуска процесса установки:

./bootsmanctl mgmt create cluster-name -i baremetal -c bootsman.config.yaml(1)
  1. cluster-name - Имя создаваемого управляющего кластера

Вывод инсталляции должен окончиться так:

2023-09-10T17:49:46Z | INFO  | finished
В процессе установки кластера будет формироваться
журнал событий.

Неудачная инсталляция

В случае, если установка не произвелась или прервалась потребуется сделать еще одну попытку. Для новой попытки необходимо:
- Откатить машины с помощью snapshot'а или очистить следуя инструкции
- Удалить файлы инсталляции на АРМ администратора

./bootsmanctl mgmt delete cluster-name
- Если лицензия была установлена в env операционной системы - удостовериться в ее наличии
env | grep LICENSE
- Если возникает ошибка недоступности адреса - выполните команды:
sudo lsof -i :CURRENT_PORT

kill -9 CURRENT_PORTPID

Доступ в интерфейс

Для успешного доступа в интерфейс нужно добавить запись в ваш DNS-сервер.

Запись состоит из двух параметров: IP-адрес одного из узлов роли worker и доменное имя(Оно указывалось в bootsman.config.yaml в виде опции BOOTSMAN_WEB_HOSTNAME).

После добавления записи, произведите вход в web-панель (1)

login login

login: admin
password: BOOTSMAN_WEB_BOOTSTRAPPASSWORD (2)
  1. Адрес web-панели содержится в опции BOOTSMAN_WEB_HOSTNAME
  2. Пароль для доступа в web-панель содержится в опции BOOTSMAN_WEB_BOOTSTRAPPASSWORD

Вы авторизовались под пользователем admin. Далее рекомендуем сменить этот пароль с помощью стандартного меню управления пользователями.

Следующий шаг