Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все инструкции
    • Подключение к узлу по SSH
    • Подключение к узлу через OS Login
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение Terraform-провайдера Kubernetes
    • Установка приложений из Yandex Cloud Marketplace с помощью Terraform
      • Информация об имеющихся группах узлов
      • Создание группы узлов
      • Подключение к узлу по SSH
      • Подключение к узлу через OS Login
      • Настройка автомасштабирования
      • Изменение группы узлов
      • Управление Kubernetes-метками узлов
      • Удаление группы узлов
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы
  1. Пошаговые инструкции
  2. Управление группой узлов
  3. Создание группы узлов

Создание группы узлов

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 28 ноября 2025 г.

Группа узлов — это группа виртуальных машин с одинаковой конфигурацией в кластере Managed Service for Kubernetes, на которых запускаются пользовательские контейнеры.

Перед тем как создавать группу узлов, создайте кластер Managed Service for Kubernetes и убедитесь, что в облаке достаточно свободных ресурсов.

Важно

В релизном канале RAPID начиная с версии Kubernetes 1.30 базовый образ узлов изменен с Ubuntu 20.04 на Ubuntu 22.04. В существующих кластерах и группах узлов версия операционной системы будет повышена в соответствии с выбранным способом обновления. Позже обновление станет доступно в релизных каналах REGULAR и STABLE.

Особенности и рекомендации по обновлению ОС приведены в разделе Обновление операционной системы в группе узлов.

Консоль управления
CLI
Terraform
API

Чтобы создать группу узлов Managed Service for Kubernetes:

  1. В консоли управления выберите каталог, в котором будет создан кластер Managed Service for Kubernetes.

  2. В списке сервисов выберите Managed Service for Kubernetes.

  3. Выберите кластер Managed Service for Kubernetes, для которого необходимо создать группу узлов.

  4. На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.

  5. Нажмите кнопку Создать группу узлов.

  6. Введите имя и описание группы узлов Managed Service for Kubernetes.

  7. В поле Версия Kubernetes выберите версию Kubernetes для узлов Managed Service for Kubernetes.

  8. В поле Среда запуска контейнеров выберите containerd.

  9. В поле Метки добавьте облачные метки узлов.

  10. В блоке Масштабирование выберите его тип:

    • Фиксированный — чтобы количество узлов Managed Service for Kubernetes в группе оставалось неизменным. Укажите количество узлов Managed Service for Kubernetes в группе.

      При этом станет доступна настройка Кол-во узлов.

    • Автоматический — чтобы управлять количеством узлов в группе с помощью автоматического масштабирования кластера Managed Service for Kubernetes.

      При этом станут доступны настройки:

      • Минимальное кол-во узлов.
      • Максимальное кол-во узлов.
      • Начальное кол-во узлов, с которым будет создана группа Managed Service for Kubernetes.

    Важно

    Тип масштабирования нельзя изменить после создания группы узлов Managed Service for Kubernetes.

  11. В блоке В процессе создания и обновления разрешено укажите максимальное количество узлов, на которое можно превысить размер группы при ее обновлении, а также максимальное количество недоступных при обновлении узлов.

    Важно

    Если в настройках группы узлов разрешено автоматическое расширение размера группы при обновлении, убедитесь, что в вашем облаке достаточно ресурсов. При необходимости увеличьте квоты.

  12. В блоке Вычислительные ресурсы:

    • Выберите платформу.

    • Укажите необходимое количество GPU, vCPU и гарантированную долю vCPU, а также объем RAM.

    • (Опционально) Укажите, что ВМ должна быть прерываемой.

    • (Опционально) Включите программно-ускоренную сеть.

      Важно

      Перед включением программно-ускоренной сети убедитесь, что у вас достаточно свободных ресурсов в облаке для создания одного дополнительного узла Managed Service for Kubernetes.

    Примечание

    Набор параметров зависит от выбранной платформы.

  13. (Опционально) В блоке Настройки GPU укажите, если группа узлов Managed Service for Kubernetes должна быть без предустановленных драйверов NVIDIA® и библиотек CUDA® для GPU-ускорения.

  14. (Опционально) В блоке Размещение укажите имя группы размещения для узлов Managed Service for Kubernetes. Эту настройку невозможно изменить после создания группы узлов Managed Service for Kubernetes.

    Примечание

    От группы размещения зависит максимально доступный размер группы узлов:

    • В группе ВМ со стратегией распределенного размещения максимальное число ВМ определяется лимитами.
    • В группе ВМ со стратегией размещения разделами максимальное число ВМ в разделе определяется квотами.
  15. В блоке Хранилище:

    • Укажите Тип диска узла Managed Service for Kubernetes:

      • HDD — стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе.

      • SSD — быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе.

      • Нереплицируемый SSD — сетевой диск с повышенной производительностью, реализованной за счет устранения избыточности. Размер такого диска можно менять только с шагом 93 ГБ.

        Внимание

        Нереплицируемые диски не имеют резервирования. При выходе диска из строя данные будут утеряны безвозвратно. Подробнее см. в разделе Нереплицируемые диски и сверхбыстрые сетевые хранилища с тремя репликами (SSD).

      • SSD IO — обладает теми же скоростными характеристиками, что и Нереплицируемый SSD, и одновременно обеспечивает избыточность. Размер такого диска можно менять только с шагом 93 ГБ.

    • Укажите размер диска узла Managed Service for Kubernetes.

  16. В блоке Сетевые настройки:

    • В поле Публичный адрес выберите способ назначения адреса:

      • Автоматически — чтобы назначить случайный IP-адрес из пула адресов Yandex Cloud.
      • Без адреса — чтобы не назначать публичный IP-адрес.

      Примечание

      Для подключения к внешним ресурсам, например реестрам Docker-образов Container Registry, Cloud Registry или Docker Hub, а также бакетам Object Storage, у узлов группы должен быть доступ в интернет.

      Чтобы обеспечить доступ в интернет, назначьте узлам публичный IP-адрес и настройте группу безопасности. Также в качестве альтернативы публичным IP-адресам можно создать и настроить в подсети узлов NAT-шлюз или NAT-инстанс.

      Подробнее см. в подразделе Доступ в интернет для рабочих узлов кластера.

    • Выберите группы безопасности.

      Важно

      От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов.

  17. В блоке Расположение:

    • Укажите зону доступности и подсеть, в которых вы хотите разместить узлы группы.
    • (Опционально) Вы можете разместить узлы группы с фиксированным типом масштабирования в нескольких зонах доступности, для этого нажмите кнопку Добавить расположение и укажите дополнительную зону доступности и подсеть.

    Важно

    Размещение узлов автомасштабируемой группы возможно только в одной зоне доступности.

  18. В блоке Доступ настройте один из способов подключения к узлам в группе узлов Managed Service for Kubernetes:

    • Чтобы подключаться к узлам через OS Login, выберите опцию Доступ по OS Login.

      При выборе этой опции будет нельзя указать SSH-ключи, так как эти способы подключения являются взаимоисключающими.

      Настройка и использование OS Login подробно рассмотрены в разделе Подключение к узлу через OS Login.

    • Чтобы подключаться к узлам с использованием SSH-ключей, укажите необходимые реквизиты:

      • В поле Логин введите имя пользователя.

      • В поле SSH-ключ вставьте содержимое файла публичного ключа.

      Подготовка реквизитов, настройка и использование SSH-ключей подробно рассмотрены в разделе Подключение к узлу по SSH.

    Перечень метаданных можно изменить после создания кластера.

  19. В блоке Настройки окна обновлений:

    • В поле Частота обновлений / Отключение выберите окно для обновлений:
      • Отключено — отключение автоматических обновлений.
      • В любое время — обновления разрешены в любое время.
      • Ежедневно — обновления будут происходить во временной интервал, указанный в поле Время (UTC) и продолжительность.
      • В выбранные дни — обновления будут происходить во временной интервал, указанный в поле Расписание по дням.
  20. В блоке Дополнительно:

    • Чтобы иметь возможность изменять небезопасные параметры ядра на узлах группы Managed Service for Kubernetes, используйте кнопку Добавить переменную. Для ввода имени каждого параметра ядра создайте отдельное поле.
    • Чтобы задать taint-политики узлов Managed Service for Kubernetes, используйте кнопку Добавить политику. Укажите ключ, значение и эффект каждой taint-политики в отдельном наборе полей.
    • Чтобы задать Kubernetes-метки узлов группы, используйте кнопку Добавить метку. Укажите ключ и значение каждой Kubernetes-метки в отдельном наборе полей.
  21. (Опционально) Раскройте блок Метаданные и добавьте метаданные для узлов.

    Важно

    Настройки метаданных могут повлиять на поведение и работоспособность узлов в группе. Меняйте эти настройки только если вы точно знаете, что хотите сделать.

    Передача пользовательских данных в метаданных с ключом user-data не поддерживается.

    Чтобы добавить метаданные, используйте кнопку Добавить поле. Укажите ключ и значение каждого элемента метаданных в отдельном наборе полей.

    Перечень метаданных можно изменить после создания кластера.

  22. Нажмите кнопку Создать.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Посмотрите описание команды CLI для создания группы узлов Managed Service for Kubernetes:

    yc managed-kubernetes node-group create --help
    
  2. Укажите параметры группы узлов 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 <фиксированное_количество_узлов_в_группе> \
      --max-expansion <расширение_размера_группы_при_обновлении> \
      --max-unavailable <количество_недоступных_узлов_при_обновлении> \
      --location zone=[<зона_доступности>],subnet-id=[<идентификатор_подсети>] \
      --memory <количество_ГБ_RAM> \
      --name <имя_группы_узлов> \
      --network-acceleration-type <тип_ускорения_сети> \
      --network-interface security-group-ids=[<идентификаторы_групп_безопасности>],ipv4-address=<способ_назначения_IP-адреса> \
      --platform-id <идентификатор_платформы> \
      --container-runtime containerd \
      --preemptible \
      --public-ip \
      --template-labels <ключ_облачной_метки=значение_облачной_метки> \
      --node-labels <ключ_k8s-метки=значение_k8s-метки>
      --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 — начальное количество узлов в группе.

      Тип масштабирования нельзя изменить после создания группы узлов.

    • --max-expansion — максимальное количество узлов, на которое можно увеличить размер группы при ее обновлении.

      Важно

      Если в настройках группы узлов разрешено автоматическое расширение размера группы при обновлении, убедитесь, что в вашем облаке достаточно ресурсов. При необходимости увеличьте квоты.

    • --max-unavailable — максимальное количество недоступных узлов группы при ее обновлении.

    • --location — зона доступности и подсеть, в которых будут расположены узлы Managed Service for Kubernetes. Можно указать несколько вариантов, но нельзя указывать несколько подсетей для одной зоны. Для каждой зоны доступности следует использовать отдельный параметр --location.

      Важно

      Размещение узлов автомасштабируемой группы возможно только в одной зоне доступности.

      Если в одной команде передать параметры --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-адреса.

      Примечание

      Для подключения к внешним ресурсам, например реестрам Docker-образов Container Registry, Cloud Registry или Docker Hub, а также бакетам Object Storage, у узлов группы должен быть доступ в интернет.

      Чтобы обеспечить доступ в интернет, назначьте узлам публичный IP-адрес и настройте группу безопасности. Также в качестве альтернативы публичным IP-адресам можно создать и настроить в подсети узлов NAT-шлюз или NAT-инстанс.

      Подробнее см. в подразделе Доступ в интернет для рабочих узлов кластера.

    • --platform-id — платформа для узлов Managed Service for Kubernetes.

    • --container-runtime — среда запуска контейнеров containerd.

    • --preemptible — флаг, который указывается, если виртуальные машины должны быть прерываемыми.

    • --public-ip — флаг, который указывается, если группе узлов Managed Service for Kubernetes требуется публичный IP-адрес.

    • --template-labels — облачные метки группы узлов. Можно указать несколько меток через запятую.

    • --node-labels — Kubernetes-метки группы узлов.

    • --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
    
  3. Чтобы добавить метаданные для узлов, используйте параметр --metadata или --metadata-from-file.

    Способ подключения к узлам в группе узлов настраивается с помощью метаданных. Допустимо настроить только один из способов, так как они являются взаимоисключающими.

    Чтобы получить возможность подключаться к узлам в группе узлов, укажите метаданные для выбранного способа подключения:

    • Чтобы подключаться к узлам через OS Login, добавьте метаданные с ключом enable-oslogin и значением true.

      Настройка и использование OS Login подробно рассмотрены в разделе Подключение к узлу через OS Login.

    • Чтобы подключаться к узлам с использованием SSH-ключей, добавьте метаданные с ключом ssh-keys и значением, в котором содержится перечень реквизитов для подключения.

      Подготовка реквизитов, настройка и использование SSH-ключей подробно рассмотрены в разделе Подключение к узлу по SSH.

    Важно

    Настройки метаданных могут повлиять на поведение и работоспособность узлов в группе. Меняйте эти настройки только если вы точно знаете, что хотите сделать.

    Передача пользовательских данных в метаданных с ключом user-data не поддерживается.

    Добавьте метаданные одним из способов:

    • С помощью --metadata: укажите одну или несколько пар ключ=значение, разделенных запятыми.

      Значение ключа передается в явном виде.

    • С помощью --metadata-from-file: укажите одну или несколько пар ключ=путь_к_файлу_со_значением, разделенных запятыми.

      Значение ключа будет считано из файла. Это может быть полезно, если значение слишком длинное, чтобы передавать его в явном виде, или содержит переносы строк и другие спецсимволы.

    Перечень метаданных можно изменить после создания кластера.

  4. Чтобы указать группу размещения для узлов Managed Service for Kubernetes:

    1. Получите список групп размещения с помощью команды yc compute placement-group list.

    2. Передайте имя или идентификатор группы размещения в параметре --placement-group при создании группы узлов Managed Service for Kubernetes:

      yc managed-kubernetes node-group create \
      ...
        --placement-group <имя_или_идентификатор_группы_размещения>
      

    Примечание

    От группы размещения зависит максимально доступный размер группы узлов:

    • В группе ВМ со стратегией распределенного размещения максимальное число ВМ определяется лимитами.
    • В группе ВМ со стратегией размещения разделами максимальное число ВМ в разделе определяется квотами.

Чтобы создать группу узлов Managed Service for Kubernetes:

  1. В каталоге с файлом описания кластера создайте конфигурационный файл, содержащий параметры новой группы узлов Managed Service for Kubernetes.

    Пример структуры конфигурационного файла:

    resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" {
      cluster_id = yandex_kubernetes_cluster.<имя_кластера>.id
      name       = "<имя_группы_узлов>"
      ...
      instance_template {
        name       = "<шаблон_имени_узлов>"
        platform_id = "<платформа_для_узлов>"
        placement_policy {
          placement_group_id = "<группа_размещения>"
        }
        network_acceleration_type = "<тип_ускорения_сети>"
        container_runtime {
          type = "containerd"
        }
        labels {
          "<имя_облачной_метки>"="<значение_облачной_метки>"
        }
        node_labels {
          "<имя_Kubernetes-метки>"="<значение_Kubernetes-метки>"
        }
        ...
      }
      ...
      scale_policy {
        <настройки_масштабирования_группы_узлов>
      }
      deploy_policy {
        max_expansion   = <расширение_размера_группы_при_обновлении>
        max_unavailable = <количество_недоступных_узлов_при_обновлении>
      }
      ...
      allocation_policy {
        location {
          zone = "<зона_доступности>"
        }
      }
    }
    

    Где:

    • 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.

      • placement_group_id — группа размещения для узлов Managed Service for Kubernetes.

        Примечание

        От группы размещения зависит максимально доступный размер группы узлов:

        • В группе ВМ со стратегией распределенного размещения максимальное число ВМ определяется лимитами.
        • В группе ВМ со стратегией размещения разделами максимальное число ВМ в разделе определяется квотами.
      • network_acceleration_type — тип ускорения сети:

        • standard — без ускорения.
        • software-accelerated — программно-ускоренная сеть.

        Важно

        Перед включением программно-ускоренной сети убедитесь, что у вас достаточно свободных ресурсов в облаке для создания одного дополнительного узла Managed Service for Kubernetes.

      • container_runtime, type — среда запуска контейнеров containerd.

      • labels — облачные метки группы узлов. Можно указать несколько меток через запятую.

      • node_labels — Kubernetes-метки группы узлов.

      • scale_policy — настройки масштабирования.

        Тип масштабирования нельзя изменить после создания группы узлов.

      • deploy_policy — настройки развертывания группы:

        • max_expansion — максимальное количество узлов, на которое можно увеличить размер группы при ее обновлении.

          Важно

          Если в настройках группы узлов разрешено автоматическое расширение размера группы при обновлении, убедитесь, что в вашем облаке достаточно ресурсов. При необходимости увеличьте квоты.

        • max_unavailable — максимальное количество недоступных узлов группы при ее обновлении.

      • allocation_policy — настройки размещения. Содержат блок location с параметром zone — зона доступности, в которой вы хотите разместить узлы группы. Вы можете разместить узлы группы с фиксированным типом масштабирования в нескольких зонах доступности, для этого укажите каждую зону доступности в отдельном блоке location.

        Важно

        Размещение узлов автомасштабируемой группы возможно только в одной зоне доступности.

    • Чтобы создать группу с фиксированным количеством узлов, добавьте блок 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-записи:

      1. Создайте внутреннюю или публичную зону DNS.

      2. Добавьте блок 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.

  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в каталог, в котором создан конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

    Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. Это проверочный этап: ресурсы не будут созданы.

  3. Создайте группу узлов Managed Service for Kubernetes.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание ресурсов.

    После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся IP-адреса виртуальных машин. Проверить появление ресурсов и их настройки можно в консоли управления.

    Ограничения по времени

    Провайдер Terraform ограничивает время на выполнение операций с группами узлов кластера Managed Service for Kubernetes:

    • создание и изменение — 60 минут;
    • удаление — 20 минут.

    Операции, которые длятся дольше указанного времени, прерываются.

    Как изменить эти ограничения?

    Добавьте к описанию группы узлов кластера блок timeouts, например:

    resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" {
      ...
      timeouts {
        create = "1h30m"
        update = "1h30m"
        delete = "60m"
      }
    }
    

Воспользуйтесь методом 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.

  • Kubernetes-метки группы узлов в параметре nodeLabels.

  • Настройки масштабирования в параметре scalePolicy.

    Тип масштабирования нельзя изменить после создания группы узлов.

  • Настройки развертывания группы узлов в параметре deployPolicy:

    • maxExpansion — максимальное количество узлов, на которое можно увеличить размер группы при ее обновлении.

      Важно

      Если в настройках группы узлов разрешено автоматическое расширение размера группы при обновлении, убедитесь, что в вашем облаке достаточно ресурсов. При необходимости увеличьте квоты.

    • maxUnavailable — максимальное количество недоступных узлов группы при ее обновлении.

  • Настройки размещения группы узлов 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}.

  • Чтобы указать группу размещения для узлов Managed Service for Kubernetes, передайте идентификатор группы размещения в параметре nodeTemplate.placementPolicy.placementGroupId.

    Примечание

    От группы размещения зависит максимально доступный размер группы узлов:

    • В группе ВМ со стратегией распределенного размещения максимальное число ВМ определяется лимитами.
    • В группе ВМ со стратегией размещения разделами максимальное число ВМ в разделе определяется квотами.
  • Чтобы добавить метаданные для узлов, передайте их в параметре 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.
  • Облачная метка — template-label1=template-value1.
  • Разрешение на использование небезопасных параметров ядра — включено. Добавлены параметры kernel.msg* и net.core.somaxconn.
  • ВМ, которая является единственным узлом группы, — прерываемая.
CLI
Terraform

Выполните следующую команду:

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
  1. Разместите конфигурационный файл для группы узлов в каталоге с файлом описания кластера.

    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"]
    }
    
  2. Проверьте корректность конфигурационного файла.

    1. В командной строке перейдите в каталог, в котором создан конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

    Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. Это проверочный этап: ресурсы не будут созданы.

  3. Создайте группу узлов Managed Service for Kubernetes.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание ресурсов.

    После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся IP-адреса виртуальных машин. Проверить появление ресурсов и их настройки можно в консоли управления.

Была ли статья полезна?

Предыдущая
Информация об имеющихся группах узлов
Следующая
Подключение к узлу по SSH
Проект Яндекса
© 2025 ООО «Яндекс.Облако»