Управление Kubernetes-метками узлов
Отдельные узлы в группах узлов — это виртуальные машины Yandex Compute Cloud с автоматически сгенерированными именами. Чтобы сконфигурировать узлы, воспользуйтесь инструкциями, приведенными ниже, или другими инструкциями по управлению группами узлов.
Внимание
Не изменяйте параметры ВМ узлов, в том числе имена, сетевые интерфейсы и SSH-ключи, с помощью интерфейсов Compute Cloud или SSH-подключения к ВМ.
Это может нарушить работу отдельных узлов, групп узлов и всего кластера Managed Service for Kubernetes.
Назначить Kubernetes-метки при создании группы узлов
Вы можете добавлять Kubernetes-метки сразу на все узлы Managed Service for Kubernetes в группе узлов. Для этого задайте набор меток в параметре node_labels
при создании группы узлов Managed Service for Kubernetes.
-
Создайте кластер Managed Service for Kubernetes.
Вы можете использовать уже работающий кластер Managed Service for Kubernetes или создать новый.
-
Создайте группу узлов с Kubernetes-метками:
Консоль управленияCLITerraformAPI- В консоли управления
выберите каталог, в котором создан кластер 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.
- В блоке Масштабирование:
- Выберите тип политики масштабирования.
- Укажите количество узлов в группе узлов Managed Service for Kubernetes.
- В блоке В процессе создания и обновления разрешено укажите максимальное количество виртуальных машин, на которое можно превысить и уменьшить размер группы Managed Service for Kubernetes.
- В блоке Вычислительные ресурсы:
- Выберите платформу.
- Укажите необходимое количество vCPU и гарантированную долю vCPU, а также объем RAM.
- В блоке Хранилище:
- Укажите Тип диска узла Managed Service for Kubernetes:
HDD
— стандартный сетевой диск, сетевое блочное хранилище на HDD-накопителе.SSD
— быстрый сетевой диск, сетевое блочное хранилище на SSD-накопителе.Нереплицируемый SSD
— сетевой диск с повышенной производительностью, реализованной за счет устранения избыточности. Размер такого диска можно менять только с шагом 93 ГБ.SSD IO
— обладает теми же скоростными характеристиками, что иНереплицируемый SSD
, и одновременно обеспечивает избыточность. Размер такого диска можно менять только с шагом 93 ГБ.
- Укажите размер диска узла Managed Service for Kubernetes.
- Укажите Тип диска узла Managed Service for Kubernetes:
- В блоке Сетевые настройки:
- В поле Публичный адрес выберите способ назначения адреса:
Автоматически
— чтобы назначить случайный IP-адрес из пула адресов Yandex Cloud.Без адреса
— чтобы не назначать публичный IP-адрес.
- Укажите расположение узлов Managed Service for Kubernetes по зонам доступности и сетям.
- В поле Публичный адрес выберите способ назначения адреса:
- В блоке Доступ укажите данные для доступа на узел Managed Service for Kubernetes:
- В поле Логин введите имя пользователя.
- В поле SSH-ключ вставьте содержимое файла публичного ключа.
- В блоке Настройки окна обновлений:
- В поле Частота обновлений / Отключение выберите окно для обновлений:
Отключено
— отключение автоматических обновлений.В любое время
— обновления разрешены в любое время.Ежедневно
— обновления будут происходить во временной интервал, указанный в поле Время (UTC) и продолжительность.В выбранные дни
— обновления будут происходить во временной интервал, указанный в поле Расписание по дням.
- В поле Частота обновлений / Отключение выберите окно для обновлений:
- В блоке Дополнительно:
- В поле Метки узла нажмите кнопку Добавить метку и укажите ее ключ и значение. Если необходимо, добавьте несколько меток.
- Нажмите кнопку Создать.
Создайте группу узлов Managed Service for Kubernetes:
yc managed-kubernetes node-group create \ --name k8s-labels-node \ --cluster-name k8s-labels \ --disk-type network-ssd \ --fixed-size 1 \ --node-labels environment=production,apps/tier=backend
Где:
--name
— имя группы узлов Managed Service for Kubernetes.--cluster-name
— имя кластера Managed Service for Kubernetes, в котором будет создана группа узлов.--disk-type
— тип диска узла Managed Service for Kubernetes.--fixed-size
— количество узлов Managed Service for Kubernetes в группе.--node-labels
— метки узла Managed Service for Kubernetes. Можно указать несколько меток через запятую.
Результат:
done (2m19s) id: catkuapro07e******** cluster_id: abcsk1s2f3fm******** created_at: "2020-09-24T13:32:24Z" name: k8s-labels-node status: RUNNING node_template: platform_id: standard-v2 resources_spec: memory: "4294967296" cores: "2" core_fraction: "100" boot_disk_spec: disk_type_id: network-ssd disk_size: "103079215104" v4_address_spec: {} scheduling_policy: {} scale_policy: fixed_scale: size: "1" allocation_policy: locations: - zone_id: ru-central1-a subnet_id: e9bm87gkjd81******** deploy_policy: max_expansion: "3" instance_group_id: cl1v2gh33j1c******** node_version: "1.17" version_info: current_version: "1.17" maintenance_policy: auto_upgrade: true auto_repair: true maintenance_window: anytime: {} node_labels: apps/tier: backend environment: production
Важно
Группа узлов Managed Service for Kubernetes будет создана заново.
-
Откройте актуальный конфигурационный файл с описанием группы узлов Managed Service for Kubernetes.
О том, как создать такой файл, см. в разделе Создание группы узлов.
-
Добавьте к описанию группы узлов Managed Service for Kubernetes параметр
node_labels
:resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" { cluster_id = yandex_kubernetes_cluster.<имя_кластера>.id ... node_labels = { "<метка_1>" = "<значение_1>" "<метка_2>" = "<значение_2>" ... } }
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Подробнее см. в документации провайдера Terraform
. -
- В консоли управления
-
Посмотрите информацию о созданной группе узлов с Kubernetes-метками:
Консоль управленияCLIAPI- В консоли управления
выберите каталог, в котором создан кластер Managed Service for Kubernetes. - В списке сервисов выберите Managed Service for Kubernetes.
- Выберите кластер Managed Service for Kubernetes, в котором создана группа узлов.
- На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.
- На странице одного из узлов Managed Service for Kubernetes перейдите на вкладку Метки. На вкладке перечислены системные и пользовательские Kubernetes-метки узла.
-
Установите kubectl
и настройте его на работу с созданным кластером. -
Посмотрите все узлы кластера Managed Service for Kubernetes:
kubectl get nodes
Результат:
NAME STATUS ROLES AGE VERSION catkuapro07e********-hgjd Ready <none> 1h v1.17.8 catkuapro07e********-lskc Ready <none> 1h v1.17.8
-
Посмотрите информацию о выбранном узле кластера Managed Service for Kubernetes:
kubectl describe node catkuapro07e********-hgjd
Результат:
Name: catkuapro07e********-hgjd Roles: <none> Labels: apps/tier=backend beta.kubernetes.io/arch=amd64 beta.kubernetes.io/instance-type=standard-v2 beta.kubernetes.io/os=linux environment=production failure-domain.beta.kubernetes.io/zone=ru-central1-a kubernetes.io/arch=amd64 kubernetes.io/hostname=catkuapro07e********-hgjd kubernetes.io/os=linux node.kubernetes.io/kube-proxy-ds-ready=true node.kubernetes.io/masq-agent-ds-ready=true node.kubernetes.io/node-problem-detector-ds-ready=true yandex.cloud/node-group-id=catkuapro07e******** yandex.cloud/pci-topology=k8s yandex.cloud/preemptible=false
- В консоли управления
Назначить Kubernetes-метку на уже созданную группу узлов
Назначение Kubernetes-меток не приводит к пересозданию группы узлов.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы назначить Kubernetes-метку на уже созданную группу узлов, выполните команду:
yc managed-kubernetes node-group add-node-labels \
--id <идентификатор_группы_узлов> \
--labels <ключ>=<значение>, ...
Команда содержит параметры:
--id
— идентификатор группы узлов. Его можно получить вместе со списком групп узлов в кластере Managed Service for Kubernetes.--labels
— Kubernetes-метки в формате<ключ>=<значение>
. Можно указать одну или несколько меток через запятую.
Чтобы назначить Kubernetes-метку на уже созданную группу узлов:
-
Откройте актуальный конфигурационный файл Terraform с описанием группы узлов Managed Service for Kubernetes.
О том, как создать такой файл, см. в разделе Создание группы узлов.
-
В описании группы узлов добавьте блок
node_labels
:resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" { ... node_labels { "<имя_метки>" = "<значение_метки>" ... } ... }
Можно назначить несколько меток. Для этого укажите каждую метку на отдельной строке.
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Подробнее см. в документации провайдера Terraform
. -
Чтобы назначить Kubernetes-метку на уже созданную группу узлов, воспользуйтесь методом update для ресурса NodeGroup и передайте в запросе:
- Kubernetes-метки в параметре
nodeLabels
. - Обновляемый параметр
nodeLabels
в параметреupdateMask
.
Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Снять Kubernetes-метку с группы узлов
Удаление Kubernetes-меток не приводит к пересозданию группы узлов.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы снять Kubernetes-метку с группы узлов, выполните команду:
yc managed-kubernetes node-group remove-node-labels \
--id <идентификатор_группы_узлов> \
--labels <ключ_метки>, ...
Команда содержит параметры:
--id
— идентификатор группы узлов. Его можно получить вместе со списком групп узлов в кластере Managed Service for Kubernetes.--labels
— ключи Kubernetes-меток, которые надо снять. Можно указать одну или несколько меток через запятую.
Чтобы снять Kubernetes-метку с группы узлов:
-
Откройте актуальный конфигурационный файл Terraform с описанием группы узлов Managed Service for Kubernetes.
О том, как создать такой файл, см. в разделе Создание группы узлов.
-
Удалите из описания группы узлов ненужные Kubernetes-метки в блоке
node_labels
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Подробнее см. в документации провайдера Terraform
. -
Чтобы снять Kubernetes-метку с группы узлов, воспользуйтесь методом update для ресурса NodeGroup и передайте в запросе:
- Новый набор Kubernetes-меток в параметре
nodeLabels
. Если вы хотите снять все метки, передайте в запросе"nodeLabels": {}
. - Обновляемый параметр
nodeLabels
в параметреupdateMask
.
Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).