После первоначальной установки кластер состоит только из одного узла — master-узла. Для того чтобы запускать виртуальные машины на подготовленных worker-узлах, их необходимо добавить в кластер.

Далее будет рассмотрено добавление двух worker-узлов. Более подробную информацию о добавлении статических узлов в кластер можно найти в документации.

Подготовка узлов

  1. Убедитесь, что поддержка виртуализации Intel-VT (VMX) или AMD-V (SVM) включена на уровне BIOS/UEFI на всех узлах кластера.

  2. Установите одну из поддерживаемых операционных систем на каждом узле кластера. Обратите внимание на версию и архитектуру системы.

  3. Проверьте доступ к container registry:

    • Убедитесь, что с каждого узла кластера доступен container registry. Установщик по умолчанию использует публичное хранилище registry.deckhouse.ru. Настройте сетевое подключение и необходимые политики безопасности для доступа к репозиторию.
    • Чтобы проверить доступ, воспользуйтесь следующей командой:

      1curl https://registry.deckhouse.ru/v2/
      

      Ожидаемый ответ:

      1401 Unauthorized
      

Добавление подготовленных узлов

Создайте ресурс NodeGroup worker. Для этого выполните на master-узле следующую команду:

1sudo -i d8 k create -f - << EOF
2apiVersion: deckhouse.io/v1
3kind: NodeGroup
4metadata:
5 name: worker
6spec:
7 nodeType: Static
8 staticInstances:
9   count: 2
10   labelSelector:
11     matchLabels:
12       role: worker
13EOF

Сгенерируйте SSH-ключ с пустой парольной фразой. Для этого выполните на master-узле следующую команду:

1ssh-keygen -t rsa -f /dev/shm/caps-id -C "" -N ""

Создайте в кластере ресурс SSHCredentials. Для этого выполните на master-узле следующую команду:

1sudo -i d8 k create -f - <<EOF
2apiVersion: deckhouse.io/v1alpha1
3kind: SSHCredentials
4metadata:
5  name: caps
6spec:
7  user: caps
8  privateSSHKey: "`cat /dev/shm/caps-id | base64 -w0`"
9EOF

Получите публичную часть сгенерированного ранее SSH-ключа (он понадобится на следующем шаге). Для этого выполните на master-узле следующую команду:

1cat /dev/shm/caps-id.pub

На worker-узле создайте пользователя caps. Для этого выполните следующие команды, указав публичную часть SSH-ключа, полученную на предыдущем шаге:

1export KEY='<SSH-PUBLIC-KEY>' # Укажите публичную часть SSH-ключа пользователя.
2useradd -m -s /bin/bash caps
3usermod -aG sudo caps
4echo 'caps ALL=(ALL) NOPASSWD: ALL' | sudo EDITOR='tee -a' visudo
5mkdir /home/caps/.ssh
6echo $KEY >> /home/caps/.ssh/authorized_keys
7chown -R caps:caps /home/caps
8chmod 700 /home/caps/.ssh
9chmod 600 /home/caps/.ssh/authorized_keys

В операционных системах семейства Astra Linux при использовании модуля мандатного контроля целостности Parsec сконфигурируйте максимальный уровень целостности для пользователя caps:

1pdpl-user -i 63 caps

Создайте ресурcы StaticInstance. Выполните на master-узле следующие команды с указанием IP-адреса и уникального имени каждого узла:

1export NODE_IP=<NODE-IP-ADDRESS> # Укажите IP-адрес узла, который необходимо подключить к кластеру.
2export NODE_NAME=<NODE-NAME> # Укажите уникальное имя узла, например, dvp-worker-1.
3sudo -i d8 k create -f - <<EOF
4apiVersion: deckhouse.io/v1alpha1
5kind: StaticInstance
6metadata:
7  name: "$NODE_NAME"
8  labels:
9    role: worker
10spec:
11  address: "$NODE_IP"
12  credentialsRef:
13    kind: SSHCredentials
14    name: caps
15EOF

Убедитесь, что все узлы кластера находятся в статусе Ready.

Выполните на master-узле следующую команду, чтобы получить список узлов кластера:

1sudo -i d8 k get no

Пример вывода:

1NAME            STATUS   ROLES                  AGE    VERSION
2master-0        Ready    control-plane,master   40m    v1.29.10
3dvp-worker-1    Ready    worker                 3m     v1.29.10
4dvp-worker-2    Ready    worker                 3m     v1.29.10