Создание группы узлов
Группа узлов — это группа виртуальных машин с одинаковой конфигурацией в кластере 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 перейдите на вкладку Управление узлами.
-
Нажмите кнопку Создать группу узлов.
-
Введите имя и описание группы узлов 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:
-
Чтобы подключаться к узлам через OS Login, выберите опцию Доступ по OS Login.
При выборе этой опции будет нельзя указать SSH-ключи, так как эти способы подключения являются взаимоисключающими.
Настройка и использование OS Login подробно рассмотрены в разделе Подключение к узлу через OS Login.
-
Чтобы подключаться к узлам с использованием SSH-ключей, укажите необходимые реквизиты:
-
В поле Логин введите имя пользователя.
-
В поле SSH-ключ вставьте содержимое файла публичного ключа.
Подготовка реквизитов, настройка и использование SSH-ключей подробно рассмотрены в разделе Подключение к узлу по SSH.
-
Перечень метаданных можно изменить после создания кластера.
-
-
В блоке Настройки окна обновлений:
- В поле Частота обновлений / Отключение выберите окно для обновлений:
Отключено
— отключение автоматических обновлений.В любое время
— обновления разрешены в любое время.Ежедневно
— обновления будут происходить во временной интервал, указанный в поле Время (UTC) и продолжительность.В выбранные дни
— обновления будут происходить во временной интервал, указанный в поле Расписание по дням.
- В поле Частота обновлений / Отключение выберите окно для обновлений:
-
В блоке Дополнительно:
- Чтобы иметь возможность изменять небезопасные параметры ядра на узлах группы Managed Service for Kubernetes, используйте кнопку Добавить переменную. Для ввода имени каждого параметра ядра создайте отдельное поле.
- Чтобы задать taint-политики узлов Managed Service for Kubernetes, используйте кнопку Добавить политику. Укажите ключ, значение и эффект каждой taint-политики в отдельном наборе полей.
- Чтобы задать Kubernetes-метки узлов группы, используйте кнопку Добавить метку. Укажите ключ и значение каждой Kubernetes-метки в отдельном наборе полей.
-
(Опционально) Раскройте блок Метаданные и добавьте метаданные для узлов.
Важно
Настройки метаданных могут повлиять на поведение и работоспособность узлов в группе. Меняйте эти настройки только если вы точно знаете, что хотите сделать.
Передача пользовательских данных в метаданных с ключом
user-data
не поддерживается.Чтобы добавить метаданные, используйте кнопку Добавить поле. Укажите ключ и значение каждого элемента метаданных в отдельном наборе полей.
Перечень метаданных можно изменить после создания кластера.
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки 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-политики> \ --container-network-settings pod-mtu=<значение_MTU_для_подов_группы>
Где:
-
--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. -
--auto-scale
— настройки автоматического масштабирования кластера Managed Service for Kubernetes:min
— минимальное количество узлов в группе.max
— максимальное количество узлов в группе.initial
— начальное количество узлов в группе.
Тип масштабирования нельзя изменить после создания группы узлов.
-
-
--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. Можно указать несколько политик. -
--container-network-settings
— значение MTU для сетевых соединений с подами группы. Настройка не применима для кластеров с контроллерами сетевых политик Calico или Cilium.
Результат:
done (1m17s) id: catpl8c44kii******** cluster_id: catcsqidoos7******** ... start_time: hours: 22 duration: 36000s
-
-
Чтобы добавить метаданные для узлов, используйте параметр
--metadata
или--metadata-from-file
.Способ подключения к узлам в группе узлов настраивается с помощью метаданных. Допустимо настроить только один из способов, так как они являются взаимоисключающими.
Чтобы получить возможность подключаться к узлам в группе узлов, укажите метаданные для выбранного способа подключения:
-
Чтобы подключаться к узлам через OS Login, добавьте метаданные с ключом
enable-oslogin
и значениемtrue
.Настройка и использование OS Login подробно рассмотрены в разделе Подключение к узлу через OS Login.
-
Чтобы подключаться к узлам с использованием SSH-ключей, добавьте метаданные с ключом
ssh-keys
и значением, в котором содержится перечень реквизитов для подключения.Подготовка реквизитов, настройка и использование SSH-ключей подробно рассмотрены в разделе Подключение к узлу по SSH.
Важно
Настройки метаданных могут повлиять на поведение и работоспособность узлов в группе. Меняйте эти настройки только если вы точно знаете, что хотите сделать.
Передача пользовательских данных в метаданных с ключом
user-data
не поддерживается.Добавьте метаданные одним из способов:
-
С помощью
--metadata
: укажите одну или несколько парключ=значение
, разделенных запятыми.Значение ключа передается в явном виде.
-
С помощью
--metadata-from-file
: укажите одну или несколько парключ=путь_к_файлу_со_значением
, разделенных запятыми.Значение ключа будет считано из файла. Это может быть полезно, если значение слишком длинное, чтобы передавать его в явном виде, или содержит переносы строк и другие спецсимволы.
Перечень метаданных можно изменить после создания кластера.
-
-
Чтобы указать группу размещения для узлов 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.
Пример структуры конфигурационного файла:
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 = <начальное_количество_узлов_в_группе_узлов> } } }
-
Чтобы добавить метаданные для узлов, передайте их в параметре
instance_template.metadata
.Способ подключения к узлам в группе узлов настраивается с помощью метаданных. Допустимо настроить только один из способов, так как они являются взаимоисключающими.
Чтобы получить возможность подключаться к узлам в группе узлов, укажите метаданные для выбранного способа подключения:
-
Чтобы подключаться к узлам через OS Login, добавьте метаданные с ключом
enable-oslogin
и значениемtrue
.Настройка и использование OS Login подробно рассмотрены в разделе Подключение к узлу через OS Login.
-
Чтобы подключаться к узлам с использованием SSH-ключей, добавьте метаданные с ключом
ssh-keys
и значением, в котором содержится перечень реквизитов для подключения.Подготовка реквизитов, настройка и использование SSH-ключей подробно рассмотрены в разделе Подключение к узлу по SSH.
Важно
Настройки метаданных могут повлиять на поведение и работоспособность узлов в группе. Меняйте эти настройки только если вы точно знаете, что хотите сделать.
Передача пользовательских данных в метаданных с ключом
user-data
не поддерживается.Добавьте метаданные одним из способов:
-
Укажите одну или несколько пар
ключ=значение
.Значение ключа передается в явном виде.
-
Укажите одну или несколько пар
ключ=file(путь_к_файлу_со_значением)
.Значение ключа будет считано из файла. Это может быть полезно, если значение слишком длинное, чтобы передавать его в явном виде, или содержит переносы строк и другие спецсимволы.
resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" { ... instance_template { metadata = { "ключ_1" = "значение" "ключ_2" = file("<путь_к_файлу_со_значением>") ... } ... } ... }
Перечень метаданных можно изменить после создания кластера.
-
-
Чтобы добавить 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}
. -
Чтобы добавить метаданные для узлов, передайте их в параметре
nodeTemplate.metadata
.Способ подключения к узлам в группе узлов настраивается с помощью метаданных. Допустимо настроить только один из способов, так как они являются взаимоисключающими.
Чтобы получить возможность подключаться к узлам в группе узлов, укажите метаданные для выбранного способа подключения:
-
Чтобы подключаться к узлам через OS Login, добавьте метаданные с ключом
enable-oslogin
и значениемtrue
.Настройка и использование OS Login подробно рассмотрены в разделе Подключение к узлу через OS Login.
-
Чтобы подключаться к узлам с использованием SSH-ключей, добавьте метаданные с ключом
ssh-keys
и значением, в котором содержится перечень реквизитов для подключения.Подготовка реквизитов, настройка и использование SSH-ключей подробно рассмотрены в разделе Подключение к узлу по SSH.
Важно
Настройки метаданных могут повлиять на поведение и работоспособность узлов в группе. Меняйте эти настройки только если вы точно знаете, что хотите сделать.
Передача пользовательских данных в метаданных с ключом
user-data
не поддерживается.Добавьте метаданные, указав одну или несколько пар
ключ=значение
, разделенных запятыми.Значение ключа передается в явном виде.
Перечень метаданных можно изменить после создания кластера.
-
-
Чтобы добавить DNS-записи, передайте их настройки в параметре
nodeTemplate.v4AddressSpec.dnsRecordSpecs
. В FQDN записи DNS можно использовать шаблон с переменными для имени узловnodeTemplate.name
.
Процесс создания группы узлов Managed Service for Kubernetes может занять несколько минут в зависимости от количества узлов.
Отдельные узлы в группах узлов — это виртуальные машины Yandex Compute Cloud с автоматически сгенерированными именами. Чтобы сконфигурировать узлы, воспользуйтесь инструкциями по управлению группами узлов.
Внимание
Не изменяйте параметры ВМ узлов, в том числе имена, сетевые интерфейсы и SSH-ключи, с помощью интерфейсов Compute Cloud или SSH-подключения к ВМ.
Это может нарушить работу отдельных узлов, групп узлов и всего кластера Managed Service for Kubernetes.
Примеры
Создайте группу узлов для кластера Managed Service for Kubernetes с тестовыми характеристиками:
- Имя —
k8s-demo-ng
. - Описание —
Test node group
. - Шаблон имени узлов —
test-{instance.short_id}-{instance_group.id}
. - Кластер Kubernetes — укажите идентификатор существующего кластера, например
cat0adul1fj0********
. - Версия Kubernetes на узлах группы —
1.29
. - Платформа для узлов —
standard-v3
. - Количество vCPU для узлов — два.
- Гарантированная доля vCPU — 50%.
- Размер диска — 64 ГБ.
- Тип диска —
network-ssd
. - Количество узлов — один.
- Количество узлов, которое сервис Managed Service for Kubernetes может создать в группе при ее обновлении, — не более трех.
- Количество узлов, которое сервис может удалить из группы при ее обновлении, — не более одного.
- Объем RAM — два ГБ.
- Время для обновления — в период с 22:00 до 08:00 UTC.
- Тип ускорения сети —
standard
(без ускорения). - Сетевые настройки:
- Идентификатор группы безопасности, например
enp6saqnq4ie********
. - Идентификатор подсети, например
e9bj3s90g9hm********
. - Назначение узлам публичного и внутреннего IP-адресов — включено.
- Идентификатор группы безопасности, например
- Kubernetes-метка —
node-label1=node-value1
. - Taint-политика Kubernetes —
taint1=taint-value1:NoSchedule
. - Ресурсная метка Yandex Cloud, которая назначается ВМ, —
template-label1=template-value1
. - Разрешение на использование небезопасных параметров ядра — включено. Добавлены параметры
kernel.msg*
иnet.core.somaxconn
. - ВМ, которая является единственным узлом группы, — прерываемая.
Выполните следующую команду:
yc managed-kubernetes node-group create \
--name k8s-demo-ng \
--description 'Test node group' \
--node-name test-{instance.short_id}-{instance_group.id} \
--cluster-id cat0adul1fj0******** \
--version 1.29 \
--platform-id standard-v3 \
--cores 2 \
--core-fraction 50 \
--disk-size 64 \
--disk-type network-ssd \
--fixed-size 1 \
--max-expansion 3 \
--max-unavailable 1 \
--memory 2 \
--daily-maintenance-window 'start=22:00,duration=10h' \
--network-acceleration-type standard \
--network-interface security-group-ids=enp6saqnq4ie********,subnets=e9bj3s90g9hm********,ipv4-address=nat \
--node-labels node-label1=node-value1 \
--node-taints taint1=taint-value1:NoSchedule \
--template-labels template-label1=template-value1 \
--allowed-unsafe-sysctls='kernel.msg*,net.core.somaxconn' \
--preemptible
-
Разместите конфигурационный файл для группы узлов в каталоге с файлом описания кластера.
resource "yandex_kubernetes_node_group" "k8s-demo-ng" { name = "k8s-demo-ng" description = "Test node group" cluster_id = "cat0adul1fj0********" version = "1.29" instance_template { name = "test-{instance.short_id}-{instance_group.id}" platform_id = "standard-v3" resources { cores = 2 core_fraction = 50 memory = 2 } boot_disk { size = 64 type = "network-ssd" } network_acceleration_type = "standard" network_interface { security_group_ids = ["enp6saqnq4ie********"] subnet_ids = ["e9bj3s90g9hm********"] nat = true } scheduling_policy { preemptible = true } } scale_policy { fixed_scale { size = 1 } } deploy_policy { max_expansion = 3 max_unavailable = 1 } maintenance_policy { auto_upgrade = true auto_repair = true maintenance_window { start_time = "22:00" duration = "10h" } } node_labels = { node-label1 = "node-value1" } node_taints = ["taint1=taint-value1:NoSchedule"] labels = { "template-label1" = "template-value1" } allowed_unsafe_sysctls = ["kernel.msg*", "net.core.somaxconn"] }
-
Проверьте корректность конфигурационного файла.
-
В командной строке перейдите в каталог, в котором создан конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. Это проверочный этап: ресурсы не будут созданы.
-
-
Создайте группу узлов Managed Service for Kubernetes.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся IP-адреса виртуальных машин. Проверить появление ресурсов и их настройки можно в консоли управления
. -