Ввод нового узла в кластер Kubernetes в Standalone
При вводе нового узла в кластер Kubernetes задайте режим его использования Data Platform с помощью разметки. Режим определяет, будет ли Data Platform размещать на узле свои сервисы и учитывать его ресурсы в квотах.
В этой инструкции разметка узла выполняется через командную строку, а переконфигурация ресурсов — через панель диагностики. Вариант ввода узла через командную строку описан в документе Руководство по установке в разделе Установка Standalone → Ввод узла в эксплуатацию.
Узел кластера Kubernetes используется в одном из двух режимов:
managed— узел обслуживается Data Platform: на нем размещаются ее сервисы, ресурсы узла учитываются в квотах. Режим задается лейбломdata.vkcs.cloud/schedule=true.unmanaged— узел не обслуживается Data Platform: ее сервисы на узле не размещаются. Режим предназначен для узлов под произвольные Helm-чарты. Режим задается лейбломdata.vkcs.cloud/unmanaged=true.
По разметке Data Platform определяет, как использовать узел: размещать ли на нем свои сервисы, учитывать ли его ресурсы в квотах, какие на нем есть диски и GPU.
Лейблы schedule и unmanaged задают режим использования узла. Остальные параметры уточняют конфигурацию узла: соответствие дисков storage class (классам хранилища Kubernetes), наличие GPU, учет root-диска в квотах. Они применяются в зависимости от назначения узла и его оборудования.
Возможные параметры разметки приведены в таблице 1.
Параметр | Тип | Значение | Описание |
|---|---|---|---|
| Лейбл |
|
|
| Лейбл |
| Узел не обслуживается Data Platform: сервисы на нем не размещаются. Используется для узлов под произвольные Helm-чарты |
| Лейбл |
| На узле есть диски соответствующего типа: SSD, HDD, NVMe. Используются для размещения подов, которым требуется конкретный тип диска |
| Лейбл |
| На узле есть GPU. Используется для размещения подов, которым требуется GPU |
| Аннотация | JSON-объект | Определяет, к какому storage class относится каждый диск узла. Без аннотации диски узла не учитываются в квотах |
| Аннотация |
|
|
| Аннотация | Имя storage class | Неразмеченные диски узла учитываются в квотах под указанным storage class. Если аннотация не задана, неразмеченные диски не учитываются в квотах |
Для ввода узла в managed-режиме:
- Разметьте узел лейблами и аннотациями.
- Запустите переконфигурацию ресурсов кластера.
- Проверьте результат.
-
Подключитесь к деплой-ноде по SSH.
-
Получите имя нового узла:
$ kubectl get nodesИмя узла указано в столбце
NAMEвывода команды. -
Установите лейбл
schedule:$ kubectl label node <УЗЕЛ> data.vkcs.cloud/schedule=true --overwriteЗдесь
<УЗЕЛ>— имя узла из вывода командыkubectl get nodes. -
(Опционально) Если на узле есть диски, разметьте их:
-
Подключитесь к новому узлу по SSH.
-
Получите имена дисков нового узла:
$ lsblkИмена дисков указаны в столбце
NAMEвывода команды. -
Вернитесь в консоль на деплой-ноду.
-
Укажите, к какому storage class относится каждый диск узла:
$ kubectl annotate node <УЗЕЛ> data.vkcs.cloud/disk-types='{"<ДИСК_1>":"<КЛАСС_ХРАНИЛИЩА_1>","<ДИСК_2>":"<КЛАСС_ХРАНИЛИЩА_2>"}' --overwriteЗдесь:
<УЗЕЛ>— имя узла из вывода командыkubectl get nodes;<ДИСК_1>,<ДИСК_2>— имена дисков из столбцаNAMEвывода командыlsblk, напримерsda,sdb,nvme0n1;<КЛАСС_ХРАНИЛИЩА_1>,<КЛАСС_ХРАНИЛИЩА_2>— имена storage class, соответствующие дискам, напримерceph-ssd,lvm-localpv.
-
Пометьте узел лейблами по типам дисков — по ним Data Platform размещает поды, которым требуется конкретный тип диска:
$ kubectl label node <УЗЕЛ> data.vkcs.cloud/ssd=true data.vkcs.cloud/nvme=true --overwrite
-
-
(Опционально) Если на узле есть GPU, пометьте его лейблом
gpu:$ kubectl label node <УЗЕЛ> data.vkcs.cloud/gpu=true --overwrite
-
В браузере перейдите в панель диагностики по адресу
https://<ДОМЕН_ЛК>/admin, где<ДОМЕН_ЛК>— домен веб-интерфейса Data Platform. Пример:https://lk-00-00.dp.ru/admin.Подробнее о панели — в разделе ссылка.
-
В поле Поиск экземпляра введите идентификатор любого экземпляра сервиса и нажмите кнопку поиска. Переконфигурация ресурсов применяется ко всему Kubernetes-кластеру, поэтому можно выбрать любой экземпляр.
Идентификатор экземпляра отображается в поле ID экземпляра на вкладке Общая информация в разделе Data Platform → Экземпляры сервисов.
-
На странице экземпляра нажмите Переконфигурация ресурсов k8s.
Дождитесь появления зеленой отметки об успешном завершении операции.
-
На странице экземпляра в панели диагностики ознакомьтесь с карточкой Квоты Kubernetes-кластера: квоты должны увеличиться. Часть CPU и RAM резервируется под системные сервисы и не попадает в квоты, поэтому значения квот меньше полных ресурсов нового узла. Чтобы увидеть полный список квот, нажмите Подробнее.
-
На вкладке Действия администратора убедитесь, что операция переконфигурации завершилась успешно.
-
Вернитесь в консоль на деплой-ноду и проверьте, что на узел добавлено ограничение (taint)
data.vkcs.cloud/nodegroup=standalone:NoSchedule:$ kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.taints}{"\n"}{end}'Это ограничение запрещает размещать на узле сервисы, не входящие в состав Data Platform. Ограничение автоматически добавляется при переконфигурации.
-
Подключитесь к деплой-ноде по SSH.
-
Получите имя нового узла:
$ kubectl get nodesИмя узла указано в столбце
NAMEвывода команды. -
Установите лейбл
unmanaged:$ kubectl label node <УЗЕЛ> data.vkcs.cloud/unmanaged=true --overwriteЗдесь
<УЗЕЛ>— имя узла из вывода командыkubectl get nodes.