Перейти к содержанию

Метки

Метки (labels) — пары ключ-значение формата key=value, которые описывают атрибуты объектов кластера. Они играют ключевую роль в механизме планирования размещения пользовательских ресурсов (ВМ) на узлах.

Метки могут быть назначены:

Основные понятия:

  • Обычные метки — создаются и назначаются пользователями.

  • Системные метки — используются системой, недоступны для создания и назначения вручную. Например, метка активации сервисного обслуживания system_drain_node=yes. Подробная информация о данной метке описана в статье Сервисное обслуживание

  • Игнорируемые метки — метки, существующие в системе, но не учитываемые при планировании. Метка может игнорироваться в контексте ВЦОД и виртуального кластера. Планировщик не учитывает игнорируемые метки во время поиска узлов по ним.

  • Делегирование метки — предоставление возможности использовать метку объектам: ВЦОД или виртуальному кластеру.


Принципы выбора объекта для размещения ресурсов по меткам

Внимание

  • При указании в nodeSelector меток, игнорируемых в кластере, ВЦОД или виртуальном кластере, будет выведена ОШИБКА.
  • Системная метка system_drain_node=yes запрещает размещение ресурсов на соответствующих узлах.
  • При обновлении ресурса изменение nodeSelector невозможно

Планировщик размещает ресурсы только на узлах, содержащих все метки, указанные в запросе на создание ресурса в элементе nodeSelector. Игнорируемые метки не участвуют в фильтрации узлов.

Например, узлам A, B и С присвоены метки

node labels
A key=base, disk=ssd, graphics=fast, foo=bar
B key=base
С key=base, disk=ssd

Получен запрос на создание пользовательского ресурса

nodeSelector из запроса на создание ресурса
nodeSelector:
    key: base
    disk: ssd
    graphics: fast

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


Управлять метками в кластере

Ограничения работы с метками в кластере

  • При создании кластера каждому узлу по умолчанию присваивается метка key=base.
  • Максимальное количество меток на узле — 150.
  • Узлу нельзя назначить несколько меток с одинаковым ключом.
  • С узла нельзя открепить все метки.
  • Нельзя удалить метки, делегированные во ВЦОД и в виртуальные кластеры.
  • Общие ограничения описаны выше.

Операции с метками кластера

  1. Создать и назначить метки узлам кластера

    scheduler labels add --labels <LABELS>
                         --nodes <NODES>
                         [--descr <DESCR>]
    

    где

    • labels — список меток узла. Задается в формате key=value;
    • nodes — список идентификаторов узлов, на которые устанавливается метка. При значении * метка устанавливается на все узлы;
    • descr — описание метки.

    Пример

    scheduler labels add --labels graphics=fast disk=ssd --nodes be492e22-d18d-46e6-9afc-b4c839ab584c bd2fcdfc-f4d3-4233-8a6b-f4ac4cbbf739 [--descr]
    
  2. Назначить существующие метки узлам кластера

    scheduler labels assign --labels <LABELS>
                            --nodes <NODES>
    

    где

    • labels — список меток узла. Задается в формате key=value;
    • nodes — список идентификаторов узлов, на которые устанавливается метка. При значении * метка устанавливается на все узлы.

    Пример

    scheduler labels assign --labels graphics=fast disk=ssd --nodes be492e22-d18d-46e6-9afc-b4c839ab584c bd2fcdfc-f4d3-4233-8a6b-f4ac4cbbf739
    
  3. Просмотреть метки кластера со списками узлов

    scheduler labels list [--filter <FILTER>]
    

    где

    • filter — фильтрация меток. Возможные значения:

      • a — all, все метки;
      • i — ignored, игнорируемые метки;
      • u — unignored, все метки, кроме игнорируемых.
  4. Просмотреть узлы кластера со списками их меток

    scheduler labels list [--nodes <NODES>]
                          [--filter <FILTER>]
    

    где

    • nodes — список идентификаторов узлов. При значении * выводятся метки на всех узлах;
    • filter — фильтрация меток. Возможные значения:

      • a — all, все метки;
      • i — ignored, игнорируемые метки;
      • u — unignored, все метки, кроме игнорируемых.

    Пример

    scheduler labels list --nodes be492e22-d18d-46e6-9afc-b4c839ab584c
    
  5. Запросить список узлов кластера по определенным меткам

    Внимание

    Игнорируемые метки не будут учтены при поиске

    scheduler labels nodes list --labels <LABELS>
                                [--strict <STRICT>]
                                [--silent <SILENT>]
    

    где

    • labels — список меток. Задается в формате key=value;
    • strict — отображать узлы в соответствии с набором меток. Возможные значения:

      • при strict y отображать узлы, которые имеют все запрошенные метки;
      • при strict n отображать узлы, которые имеют хотя бы одну из запрошенных меток;
    • silent — отображать ошибки, если какие-либо метки не существуют. Возможные значения:

      • y — отображать ошибки;
      • n — не отображать ошибки.
    Пример

    Узлам A и B присвоены метки

    node labels
    A key=base, disk=ssd, foo=bar
    B key=base

    Запрос 1 вернет список [A, B]

    Запрос 1
    scheduler labels nodes list --labels key=base disk=ssd --strict n
    

    Запрос 2 вернет только A

    Запрос 2
    scheduler labels nodes list --labels key=base disk=ssd --strict y
    
  6. Игнорировать метки в пределах всего кластера.
    Если не указывать параметр ns, то метка заблокируется для всех новых и уже существующих ВЦОД: в новый ВЦОД метку добавить будет нельзя, а в уже существующих ВЦОД новые виртуальные кластеры будут создаваться без этой метки.

    Внимание

    Игнорировать можно те метки, которые были предварительно делегированы во ВЦОД

    scheduler labels ignore --labels <LABELS>
                            [--ns <NS>]
    

    где

    • labels — список меток для игнорирования;
    • ns — список ВЦОД. При значении * метки будут автоматически помечены как игнорируемые во всех ВЦОД кластера, куда они были делегированы.

    Пример

    scheduler labels ignore --labels disk=ssd key=base
    
  7. Удалить метки кластера

    Примечание

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

    scheduler labels del --labels <LABELS>
    

    где labels — список меток для удаления.

    Пример

    scheduler labels del --labels disk=ssd key=base
    

Управлять метками во ВЦОД

Ограничения работы с метками во ВЦОД

  • При создании нового ВЦОД и при наличии в кластере базовой метки key=base и метки сервисного обслуживания system_drain_node=yes они будут автоматически делегированы в созданный ВЦОД.
  • Во ВЦОД нельзя делегировать метки, игнорируемые в пределах кластера.
  • При удалении ВЦОД все записи о делегированных ему метках удаляются.
  • Общие ограничения описаны выше.

Операции с метками во ВЦОД

Примечание

Действия выполняются пользователем с ролью Администратор кластера во ВЦОД управления

  1. Делегировать метки в заданные ВЦОД

    scheduler labels delegate ns --ns <NS>
                                 --labels <LABELS>
    

    где

    • ns — список имен ВЦОД. При значении * метка будет делегирована на все ВЦОД;
    • labels — список делегируемых меток. Задается в формате key=value.

    Пример

    scheduler labels delegate ns --ns vdc --labels disk=ssd key=base
    
  2. Просмотреть метки во ВЦОД

    Внимание

    Пользователи могут видеть метки только ВЦОД, в котором они находятся.
    При попытке запроса информации о других ВЦОД будет выдаваться ошибка.
    Исключение — ВЦОД управления

    scheduler labels ns show [--ns <NS>]
                             [--filter <FILTER>]
    

    где

    • ns — список имен ВЦОД для просмотра их меток.
      Администраторы кластера admins могут просмотреть метки всех ВЦОД кластера, добавив флаг --ns *.
      Чтобы ограничить вывод меток для определенных ВЦОД, администратор кластера должен указать их имена в --ns.
      Пользователям с другими ролями доступен просмотр меток только в своем ВЦОД без указания флага --ns.

    • filter — фильтрация меток. Возможные значения:

      • a — all, все метки;
      • i — ignored, игнорируемые метки;
      • u — unignored, все метки, кроме игнорируемых.
  3. Просмотр меток со списками ВЦОД, в которые они делегированы

    scheduler labels ns list [--ns <NS>]
                             [--filter <FILTER>]
    

    где

    • ns — список имен ВЦОД для просмотра делегированных меток.
      Администраторы кластера admins могут просмотреть делегированные метки всех ВЦОД кластера, добавив флаг --ns *.
      Чтобы ограничить вывод меток для определенных ВЦОД, администратор кластера должен указать их имена в --ns.
      Пользователям с другими ролями доступен просмотр делегированных меток только в своем ВЦОД без указания флага --ns.

    • filter — фильтрация меток. Возможные значения:

      • a — all, все метки;
      • i — ignored, игнорируемые метки;
      • u — unignored, все метки, кроме игнорируемых.
  4. Игнорировать метки в пределах заданных ВЦОД

    Внимание

    Игнорировать можно те метки, которые были предварительно делегированы во ВЦОД

    scheduler labels ignore --labels <LABELS>
                            [--ns <NS>]
    

    где

    • labels — список меток для игнорирования;
    • ns — список ВЦОД. При значении * метки будут автоматически помечены как игнорируемые во всех ВЦОД кластера, куда они были делегированы.

    Пример

    scheduler labels ignore --ns vdc --labels disk=ssd key=base
    

Термины и определения содержатся в статьях: