После первоначальной установки кластер состоит только из одного узла — master-узла. Для того чтобы запускать виртуальные машины на подготовленных worker-узлах, их необходимо добавить в кластер.
Далее будет рассмотрено добавление двух worker-узлов. Более подробную информацию о добавлении статических узлов в кластер можно найти в документации.
Подготовка узлов
-
Убедитесь, что поддержка виртуализации Intel-VT (VMX) или AMD-V (SVM) включена на уровне BIOS/UEFI на всех узлах кластера.
-
Установите одну из поддерживаемых операционных систем на каждом узле кластера. Обратите внимание на версию и архитектуру системы.
-
Проверьте доступ к container registry:
- Убедитесь, что с каждого узла кластера доступен container registry. Установщик по умолчанию использует публичное хранилище
registry.deckhouse.ru
. Настройте сетевое подключение и необходимые политики безопасности для доступа к репозиторию. -
Чтобы проверить доступ, воспользуйтесь следующей командой:
1curl https://registry.deckhouse.ru/v2/
Ожидаемый ответ:
1401 Unauthorized
- Убедитесь, что с каждого узла кластера доступен container registry. Установщик по умолчанию использует публичное хранилище
Добавление подготовленных узлов
Создайте ресурс 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