Создание группы узлов
Чтобы создать группу узлов, сначала создайте кластер Managed Service for Kubernetes и убедитесь, что в облаке достаточно свободных ресурсов.
Создайте группу узлов
Чтобы создать группу узлов Managed Service for Kubernetes:
-
В консоли управления
выберите каталог, в котором будет создан кластер Managed Service for Kubernetes. -
В списке сервисов выберите Managed Service for Kubernetes.
-
Выберите кластер Managed Service for Kubernetes, для которого необходимо создать группу узлов.
-
На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.
-
Нажмите кнопку Создать группу узлов.
-
Введите имя и описание группы узлов Managed Service for Kubernetes.
-
В поле Версия Kubernetes выберите версию Kubernetes для узлов Managed Service for Kubernetes.
-
В поле Среда запуска контейнеров выберите
containerd
. -
В блоке Масштабирование выберите его тип:
-
Фиксированный
— чтобы количество узлов Managed Service for Kubernetes в группе оставалось неизменным. Укажите количество узлов Managed Service for Kubernetes в группе.При этом станет доступна настройка Кол-во узлов.
-
Автоматический
— чтобы управлять количеством узлов в группе с помощью автоматического масштабирования кластера Managed Service for Kubernetes.При этом станут доступны настройки:
- Минимальное кол-во узлов.
- Максимальное кол-во узлов.
- Начальное кол-во узлов, с которым будет создана группа Managed Service for Kubernetes.
Важно
Тип масштабирования нельзя изменить после создания группы узлов Managed Service for Kubernetes.
-
-
В блоке В процессе создания и обновления разрешено укажите максимальное количество виртуальных машин, на которое можно превысить и уменьшить размер группы узлов Managed Service for Kubernetes.
-
В блоке Вычислительные ресурсы:
-
Выберите платформу.
-
Укажите необходимое количество GPU, vCPU и гарантированную долю vCPU, а также объем RAM.
-
(Опционально) Укажите, что ВМ должна быть прерываемой.
-
(Опционально) Включите программно-ускоренную сеть.
Важно
Перед включением программно-ускоренной сети убедитесь, что у вас достаточно свободных ресурсов в облаке для создания одного дополнительного узла Managed Service for Kubernetes.
Примечание
Набор параметров зависит от выбранной платформы.
-
-
(Опционально) В блоке Настройки GPU укажите, если группа узлов Managed Service for Kubernetes должна быть без предустановленных драйверов NVIDIA® и библиотек CUDA® для GPU-ускорения.
-
(Опционально) В блоке Размещение укажите имя группы размещения для узлов Managed Service for Kubernetes. Эту настройку невозможно изменить после создания группы узлов Managed Service for Kubernetes.
-
В блоке Хранилище:
-
Укажите Тип диска узла Managed Service for Kubernetes:
-
HDD
— стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе. -
SSD
— быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе. -
Нереплицируемый SSD
— сетевой диск с повышенной производительностью, реализованной за счет устранения избыточности. Размер такого диска можно менять только с шагом 93 ГБ.Внимание
Нереплицируемые диски не имеют резервирования. При выходе диска из строя данные будут утеряны безвозвратно. Подробнее см. в разделе Нереплицируемые диски и высокопроизводительные SSD-диски.
-
SSD IO
— обладает теми же скоростными характеристиками, что иНереплицируемый SSD
, и одновременно обеспечивает избыточность. Размер такого диска можно менять только с шагом 93 ГБ.
-
-
Укажите размер диска узла Managed Service for Kubernetes.
-
-
В блоке Сетевые настройки:
-
В поле Публичный адрес выберите способ назначения адреса:
Автоматически
— чтобы назначить случайный IP-адрес из пула адресов Yandex Cloud.Без адреса
— чтобы не назначать публичный IP-адрес.
-
Выберите группы безопасности.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов.
-
Укажите расположение узлов Managed Service for Kubernetes по зонам доступности и сетям.
-
(Опционально) Нажмите кнопку Добавить расположение и укажите дополнительную зону доступности и сеть, чтобы создать узлы Managed Service for Kubernetes в разных зонах доступности.
-
-
В блоке Доступ укажите данные для доступа на узел Managed Service for Kubernetes:
- В поле Логин введите имя пользователя.
- В поле SSH-ключ вставьте содержимое файла публичного ключа.
-
В блоке Настройки окна обновлений:
- В поле Частота обновлений / Отключение выберите окно для обновлений:
Отключено
— отключение автоматических обновлений.В любое время
— обновления разрешены в любое время.Ежедневно
— обновления будут происходить во временной интервал, указанный в поле Время (UTC) и продолжительность.В выбранные дни
— обновления будут происходить во временной интервал, указанный в поле Расписание по дням.
- В поле Частота обновлений / Отключение выберите окно для обновлений:
-
В блоке Дополнительно:
- Чтобы иметь возможность изменять небезопасные параметры ядра на узлах группы Managed Service for Kubernetes, используйте кнопку Добавить переменную. Для ввода имени каждого параметра ядра создайте отдельное поле.
- Чтобы задать taint-политики узлов Managed Service for Kubernetes, используйте кнопку Добавить политику. Укажите ключ, значение и эффект каждой taint-политики в отдельном наборе полей.
- Чтобы задать Kubernetes-метки узлов группы, используйте кнопку Добавить метку. Укажите ключ и значение каждой Kubernetes-метки в отдельном наборе полей.
-
Нажмите кнопку Создать.
Процесс создания группы узлов Managed Service for Kubernetes может занять несколько минут в зависимости от количества узлов.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания группы узлов Managed Service for Kubernetes:
yc managed-kubernetes node-group create --help
-
Укажите параметры группы узлов Managed Service for Kubernetes в команде создания (в примере приведены не все доступные параметры):
yc managed-kubernetes node-group create \ --allowed-unsafe-sysctls <имена_небезопасных_параметров_ядра> \ --cluster-name <имя_кластера> \ --cores <количество_vCPU> \ --core-fraction <гарантированная_доля_vCPU> \ --daily-maintenance-window <настройки_окна_обновлений> \ --disk-size <размер_хранилища_ГБ> \ --disk-type <тип_хранилища> \ --fixed-size <фиксированное_количество_узлов_в_группе> \ --location <настройки_размещения_хостов_кластера> \ --memory <количество_ГБ_RAM> \ --name <имя_группы_узлов> \ --network-acceleration-type <тип_ускорения_сети> \ --network-interface security-group-ids=[<идентификаторы_групп_безопасности>],subnets=[<имена_подсетей>],ipv4-address=<способ_назначения_IP-адреса> \ --platform-id <идентификатор_платформы> \ --container-runtime containerd \ --preemptible \ --public-ip \ --template-labels <облачные_метки_группы_узлов> \ --version <версия_Kubernetes_на_узлах_группы> \ --node-name <шаблон_имени_узлов> \ --node-taints <taint-политики>
Где:
-
--allowed-unsafe-sysctls
— разрешение на использование узлами группы Managed Service for Kubernetes небезопасных параметров ядра, через запятую. -
--cluster-name
— имя кластера Managed Service for Kubernetes, в котором будет создана группа узлов. -
--cores
— количество vCPU для узлов Managed Service for Kubernetes. -
--core-fraction
— гарантированная доля vCPU для узлов Managed Service for Kubernetes. -
--daily-maintenance-window
— настройки окна обновлений. -
--disk-size
— размер диска узла Managed Service for Kubernetes. -
--disk-type
— тип диска узла Managed Service for Kubernetes:network-nvme
илиnetwork-hdd
. -
--fixed-size
— количество узлов в группе узлов Managed Service for Kubernetes. -
--location
— зона доступности, сеть и подсеть, в которых будут расположены узлы Managed Service for Kubernetes. Можно указать несколько вариантов.Если в одной команде передать параметры
--location
,--network-interface
и--public-ip
, возникнет ошибка. Расположение группы узлов Managed Service for Kubernetes достаточно указать в--location
или--network-interface
.Чтобы назначить узлам Managed Service for Kubernetes публичные IP-адреса, выполните одно из действий:
- Укажите
--network-interface ipv4-address=nat
или--network-interface ipv6-address=nat
. - Включите доступ к узлам Managed Service for Kubernetes из интернета после того, как создадите группу узлов.
- Укажите
-
--memory
— количество памяти для узлов Managed Service for Kubernetes. -
--name
— имя группы узлов Managed Service for Kubernetes. -
--network-acceleration-type
— выбор типа ускорения сети:standard
— без ускорения.software-accelerated
— программно-ускоренная сеть.
Важно
Перед включением программно-ускоренной сети убедитесь, что у вас достаточно свободных ресурсов в облаке для создания одного дополнительного узла Managed Service for Kubernetes.
-
--network-interface
— настройки сети:security-group-ids
— идентификаторы групп безопасности.subnets
— имена подсетей, в которых будут размещаться узлы.ipv4-address
— способ назначения IPv4-адреса.ipv6-address
— способ назначения IPv6-адреса.
Параметры
ipv4-address
иipv6-address
отвечают за способ назначения IP-адреса:auto
— узлу будет присвоен только внутренний IP-адрес.nat
— узлу будут присвоены публичный и внутренний IP-адреса.
-
--platform-id
— платформа для узлов Managed Service for Kubernetes. -
--container-runtime
— среда запуска контейнеров containerd . -
--preemptible
— флаг, который указывается, если виртуальные машины должны быть прерываемыми. -
--public-ip
— флаг, который указывается, если группе узлов Managed Service for Kubernetes требуется публичный IP-адрес. -
--template-labels
— облачные метки группы узлов в формате<имя_метки>=<значение_метки>
. Можно указать несколько меток через запятую. -
--version
— версия Kubernetes на узлах группы Managed Service for Kubernetes. -
--node-name
— шаблон имени узлов Managed Service for Kubernetes. Для уникальности имени шаблон должен содержать хотя бы одну переменную:{instance_group.id}
— идентификатор группы ВМ.{instance.index}
— уникальный номер ВМ в группе. Возможные значения: от 1 до N, где N — количество ВМ в группе.{instance.index_in_zone}
— номер ВМ в зоне. Уникален в рамках зоны для конкретной группы ВМ.{instance.short_id}
— идентификатор ВМ, уникальный в рамках группы. Состоит из четырех букв.{instance.zone_id}
— идентификатор зоны.
Например,
prod-{instance.short_id}-{instance_group.id}
. Если имя не задано, используется значение по умолчанию:{instance_group.id}-{instance.short_id}
. -
--node-taints
— taint-политики Kubernetes. Можно указать несколько политик.
Важно
Ключ
user-data
не поддерживается для передачи пользовательских данных. Параметры для подключения по ssh необходимо указать в ключеssh-keys
в метаданных ВМ.Результат:
done (1m17s) id: catpl8c44kii******** cluster_id: catcsqidoos7******** ... start_time: hours: 22 duration: 36000s
-
-
Чтобы указать группу размещения для узлов Managed Service for Kubernetes:
-
Получите список групп размещения с помощью команды
yc compute placement-group list
. -
Передайте имя или идентификатор группы размещения во флаге
--placement group
при создании группы узлов Managed Service for Kubernetes:yc managed-kubernetes node-group create \ ... --placement-group <имя_или_идентификатор_группы_размещения>
-
Чтобы создать группу узлов Managed Service for Kubernetes:
-
В каталоге с файлом описания кластера создайте конфигурационный файл, содержащий параметры новой группы узлов Managed Service for Kubernetes:
- Имя группы узлов Managed Service for Kubernetes.
- Идентификатор кластера Managed Service for Kubernetes в параметре
cluster_id
. - Платформу для узлов Managed Service for Kubernetes.
- Настройку среды запуска контейнеров в параметре
container_runtime
. - Облачные метки группы узлов в блоке
nodeTemplate.labels
. - Настройки масштабирования в блоке
scale_policy
.
Пример структуры конфигурационного файла:
resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" { cluster_id = yandex_kubernetes_cluster.<имя_кластера>.id name = "<имя_группы_узлов>" ... instance_template { name = "<шаблон_имени_узлов>" platform_id = "<платформа_для_узлов>" network_acceleration_type = "<тип_ускорения_сети>" container_runtime { type = "containerd" } labels { "<имя_метки>"="<значение_метки>" } ... } ... scale_policy { <настройки_масштабирования_группы_узлов> } }
Где:
cluster_id
– идентификатор кластера Managed Service for Kubernetes.name
— имя группы узлов Managed Service for Kubernetes.instance_template
— параметры узлов Managed Service for Kubernetes:-
name
– шаблон имени узлов Managed Service for Kubernetes. Для уникальности имени шаблон должен содержать хотя бы одну переменную:{instance_group.id}
— идентификатор группы ВМ.{instance.index}
— уникальный номер ВМ в группе. Возможные значения: от 1 до N, где N — количество ВМ в группе.{instance.index_in_zone}
— номер ВМ в зоне. Уникален в рамках зоны для конкретной группы ВМ.{instance.short_id}
— идентификатор ВМ, уникальный в рамках группы. Состоит из четырех букв.{instance.zone_id}
— идентификатор зоны.
Например,
prod-{instance.short_id}-{instance_group.id}
. Если имя не задано, используется значение по умолчанию:{instance_group.id}-{instance.short_id}
. -
platform_id
– платформа для узлов Managed Service for Kubernetes. -
network_acceleration_type
— тип ускорения сети:standard
— без ускорения.software-accelerated
— программно-ускоренная сеть.
Важно
Перед включением программно-ускоренной сети убедитесь, что у вас достаточно свободных ресурсов в облаке для создания одного дополнительного узла Managed Service for Kubernetes.
-
container_runtime
,type
— среда запуска контейнеров containerd . -
labels
— облачные метки группы узлов. Можно указать несколько меток через запятую. -
scale_policy
– настройки масштабирования.
-
Важно
Файл с описанием группы узлов Managed Service for Kubernetes должен находиться в одном каталоге с файлом описания кластера.
-
Чтобы создать группу с фиксированным количеством узлов, добавьте блок
fixed_scale
:resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" { ... scale_policy { fixed_scale { size = <количество_узлов_в_группе> } } }
-
Чтобы создать группу узлов Managed Service for Kubernetes с автомасштабированием, добавьте блок
auto_scale
:resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" { ... scale_policy { auto_scale { min = <минимальное_количество_узлов_в_группе_узлов> max = <максимальное_количество_узлов_в_группе_узлов> initial = <начальное_количество_узлов_в_группе_узлов> } } }
-
Чтобы добавить DNS-записи:
-
Создайте внутреннюю или публичную зону DNS.
-
Добавьте блок
instance_template.network_interface.ipv4_dns_records
:resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" { ... instance_template { network_interface { ipv4_dns_records { fqdn = "<FQDN_записи_DNS>" dns_zone_id = "<идентификатор_зоны_DNS>" ttl = "<TTL_записи_DNS_в_секундах>" ptr = "<создание_PTR_записи>" } } } }
Где
ptr
— создание PTR записи:true
илиfalse
.В FQDN записи DNS можно использовать шаблон с переменными:
{instance_group.id}
— идентификатор группы ВМ.{instance.index}
— уникальный номер ВМ в группе. Возможные значения: от 1 до N, где N — количество ВМ в группе.{instance.index_in_zone}
— номер ВМ в зоне. Уникален в рамках зоны для конкретной группы ВМ.{instance.short_id}
— идентификатор ВМ, уникальный в рамках группы. Состоит из четырех букв.{instance.zone_id}
— идентификатор зоны.
-
Подробнее см. в документации провайдера Terraform
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в каталог, в котором создан конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. Это проверочный этап: ресурсы не будут созданы.
-
-
Создайте кластер Managed Service for Kubernetes.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся IP-адреса виртуальных машин. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Воспользуйтесь методом API create и передайте в запросе:
-
Идентификатор кластера Managed Service for Kubernetes в параметре
clusterId
. Его можно получить со списком кластеров Managed Service for Kubernetes в каталоге. -
Конфигурацию группы узлов Managed Service for Kubernetes в параметре
nodeTemplate
. -
Тип ускорения сети в параметре
nodeTemplate.networkSettings.type
.Важно
Перед включением программно-ускоренной сети убедитесь, что у вас достаточно свободных ресурсов в облаке для создания одного дополнительного узла Managed Service for Kubernetes.
-
Среду запуска контейнеров containerd
в параметреnodeTemplate.containerRuntimeSettings.type
. -
Облачные метки группы узлов в параметре
nodeTemplate.labels
. -
Настройки масштабирования в параметре
scalePolicy
. -
Настройки размещения группы узлов Managed Service for Kubernetes в параметрах
allocationPolicy
. -
Настройки окна обновлений в параметрах
maintenancePolicy
. -
Список изменяемых настроек в параметре
updateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Чтобы узлы использовали нереплицируемые диски, передайте значение network-ssd-nonreplicated
для параметра nodeTemplate.bootDiskSpec.diskTypeId
.
Размер нереплицируемых дисков можно менять только с шагом 93 ГБ. Максимальный размер такого диска — 4 ТБ.
Внимание
Нереплицируемые диски не имеют резервирования. При выходе диска из строя данные будут утеряны безвозвратно. Подробнее см. в разделе Нереплицируемые диски и высокопроизводительные SSD-диски.
Чтобы разрешить использование узлами группы Managed Service for Kubernetes небезопасных параметров ядра, передайте их имена в параметре allowedUnsafeSysctls
.
Чтобы задать taint-политики, передайте их значения в параметре nodeTaints
.
Чтобы задать шаблон имени узлов Managed Service for Kubernetes, передайте его в параметре nodeTemplate.name
. Для уникальности имени шаблон должен содержать хотя бы одну переменную:
{instance_group.id}
— идентификатор группы ВМ.{instance.index}
— уникальный номер ВМ в группе. Возможные значения: от 1 до N, где N — количество ВМ в группе.{instance.index_in_zone}
— номер ВМ в зоне. Уникален в рамках зоны для конкретной группы ВМ.{instance.short_id}
— идентификатор ВМ, уникальный в рамках группы. Состоит из четырех букв.{instance.zone_id}
— идентификатор зоны.
Например, prod-{instance.short_id}-{instance_group.id}
. Если имя не задано, используется значение по умолчанию: {instance_group.id}-{instance.short_id}
.
Чтобы добавить DNS-записи, передайте их настройки в параметре nodeTemplate.v4AddressSpec.dnsRecordSpecs
. В FQDN записи DNS можно использовать шаблон с переменными для имени узлов nodeTemplate.name
.
Внимание
После создания группы узлов Managed Service for Kubernetes в Yandex Compute Cloud появится одна или несколько ВМ с автоматически сгенерированными именами. Не изменяйте имена ВМ, принадлежащих кластеру Managed Service for Kubernetes. Это приведет к нарушению работы группы узлов и всего кластера Managed Service for Kubernetes.