Тегирование нод кластера
Ноды кластера могут быть помечены специальными строковыми литералами, называемыми тегами.
Часть тегов, как правило называемых системными, определяется самой нодой исходя из своего конфига и окружения. Окружение задаётся администраторами кластера. Дополнительные теги можно указывать на нодах с помощью атрибута user_tags
на узле ноды в Кипарисе.
Данные теги могут использоваться для фильтрации набора нод на основе языка булевых формул.
Булевая формула — это логическое выражение, которое:
- содержит операторы
&
(логическое "и"),|
(логическое "или"),!
(логическое "не") и круглые скобки; - построено поверх литералов. Литерал — это строка из латинских символов и спецсимволов
_
,/
,-
,.
,:
.
Выражение вычисляется для конкретной ноды. Для этого в качестве значения литерала подставляется "истина", если данный литерал встречается в списке тегов ноды, и "ложь" — иначе. Далее выражение вычисляется по стандартным правилам булевых выражений. Пустое выражение всегда принимает значение "ложь".
Выражения на тегах используются в двух сценариях:
- опция
scheduling_tag_filter
в спецификации операции позволяет указывать фильтр на подмножество нод, на которых можно запускать джобы операции; - ключи в динамическом конфиге нод
//sys/cluster_nodes/@config
.
Запуск операции с указанием тегов
Листинг 1 — Указание пользовательского тега на ноде
$ yt set //sys/cluster_nodes/exe-0.my_cluster.net:9012/@user_tags '[test]'
$ yt set //sys/cluster_nodes/exe-1.my_cluster.net:9012/@user_tags '[test]'
Листинг 2 — Запуск операции с указанием данного тега
$ yt map --spec '{scheduling_tag_filter="test"}' ...