Метки
Метки (labels) — пары ключ-значение формата key=value, которые описывают атрибуты объектов кластера. Они играют ключевую роль в механизме планирования размещения пользовательских ресурсов (ВМ) на узлах. Метки могут быть назначены в кластере, ВЦОД и виртуальном кластере.
В Sharx Base используются следующие типы меток: обычная, делегированная, игнорируемая, метка-ограничение, системная и криптографическая метка.
Метки могут быть назначены следующим объектам виртуальной инфраструктуры:
- Кластеру;
- ВЦОД;
- виртуальному кластеру (см. Руководство пользователя).
- виртуальной машине (см. Руководство пользователя).
Основные понятия:
-
Обычная метка — метка, создаваемая и назначаемая пользователями вручную. Не имеет специальных системных свойств, таких как
taintили игнорирование. -
Делегирование метки — предоставление возможности использовать метку объектам: ВЦОД или виртуальному кластеру.
-
Игнорируемая метка — метка, существующая в системе, но не учитываемая при планировании. Метка может игнорироваться в контексте ВЦОД и виртуального кластера. Планировщик не учитывает игнорируемые метки во время поиска узлов по ним.
-
Ограничение
taint— свойство узла, не позволяющее планировать на него ресурсы, у которых нет допуска (toleration) к узлу с данным ограничениемtaint. -
Метка-ограничение — метка со свойством
taint. На узлы с такой меткой ресурсы планируются по определенным правилам. -
Допуски
tolerations— это параметры виртуальных машин, которые позволяют им размещаться на узлах с ограничениями. Допуск должен соответствовать введенному ограничениюtaintна узлеkey=value:effect. -
Системная метка — используется системой, недоступна для создания и назначения вручную. Например, метка активации сервисного обслуживания
system_drain_node=yes. Подробная информация о данной метке описана в статье Сервисное обслуживание -
Криптографическая метка — метка, применяемая к ВМ для обозначения ее принадлежности к контуру криптографической защиты (СКЗИ). Имеет ключ-значение
vm=crypto. Метка определяет политику управления ВМ, блокируя функции миграции и создания снимков для исключения риска утечки защищаемых данных. Криптографическую метку может назначить или снять только определенная роль специальной командой. Подробная информация описана в Руководстве пользователя в командной строке.
Принципы выбора объекта для размещения ресурсов по меткам
Внимание
- При указании в
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 |
Получен запрос на создание пользовательского ресурса
Только узел A будет выбран планировщиком доступным для размещения ресурса, так как он единственный содержит все запрошенные метки.
Принцип размещения пользовательских ресурсов на узлы, содержащие метку-ограничение
При подборе узлов, где существует метка-ограничение, планировщик следует определенному алгоритму:
- Если метка-ограничение не была указана пользователем в параметре
nodeSelector, ресурс не будет запланирован на узлы, имеющие эту метку. - Если метка-ограничение была указана пользователем в параметре
nodeSelector, ресурс автоматически получит допуск к размещению на узле, содержащем данную метку-ограничение.
Например, узлам A, B и С присвоены метки
| node | labels |
|---|---|
| A | key=base, foo=bar:{taint} |
| B | key=base |
| C | key=base |
где метка foo=bar:{taint} — метка-ограничение.
Получен запрос на создание пользовательского ресурса
Планировщик выберет только узлы B и C, так как они не имеют метку-ограничение.
Если получен запрос с параметром nodeSelector вида
Планировщик выберет только узел A, так как он единственный имеет метку-ограничение foo=bar:{taint}.
Управлять метками в кластере
Ограничения работы с метками в кластере
- При создании кластера каждому узлу по умолчанию присваивается метка
key=base. - Максимальное количество меток на узле — 150.
- Узлу нельзя назначить несколько меток с одинаковым ключом.
- С узла нельзя открепить все метки.
- Нельзя удалить метки, делегированные во ВЦОД и в виртуальные кластеры.
- Метки можно создавать и редактировать на узлах до создания первого ВЦОД (не считая ВЦОД управления). За исключением ситуаций, когда в кластер добавляется новый узел, и на нем еще нет меток.
- Из обычной метки можно сделать метку-ограничение. Также из метки-ограничения можно сделать обычную метку, удалив у нее свойство
taint. Добавлять или удалять свойствоtaintметкам можно только до создания первого ВЦОД (не считая ВЦОД управления). - Общие ограничения описаны выше.
Операции с метками кластера
-
Создать и назначить метки узлам кластера
Внимание
Игнорировать можно те метки, которые были предварительно делегированы во ВЦОД
где
labels— список меток узла. Задается в форматеkey=value;nodes— список идентификаторов узлов, на которые устанавливается метка. При значении*метка устанавливается на все узлы;-
taints— свойство органичения для метки. Возможные значения:n– метка останется обычной. Значение по умолчанию;y— метка с ограничениемNoSchedule;
При указании
--taints yметка будет помечена как метка-ограничение. ВМ будут размещаться только при явном указании этой метки вnodeSelector. Описание меткиdescrбудет присвоено всем создаваемым меткам в данном запросе. -
descr— описание метки.
-
Назначить существующие метки узлам кластера
где
labels— список меток узла. Задается в форматеkey=value;nodes— список идентификаторов узлов, на которые устанавливается метка. При значении*метка устанавливается на все узлы.
-
Просмотреть метки кластера со списками узлов
где
-
filter— фильтрация меток. Возможные значения:a— all, все метки;i— ignored, игнорируемые метки;u— unignored, все метки, кроме игнорируемых.
-
-
Просмотреть узлы кластера со списками их меток
где
nodes— список идентификаторов узлов. При значении*выводятся метки на всех узлах;-
filter— фильтрация меток. Возможные значения:a— all, все метки;i— ignored, игнорируемые метки;u— unignored, все метки, кроме игнорируемых.
-
Запросить список узлов кластера по определенным меткам
Внимание
Игнорируемые метки не будут учтены при поиске
где
labels— список меток. Задается в форматеkey=value;-
strict— отображать узлы в соответствии с набором меток. Возможные значения:- при
strict yотображать узлы, которые имеют все запрошенные метки; - при
strict nотображать узлы, которые имеют хотя бы одну из запрошенных меток;
- при
-
silent— отображать ошибки, если какие-либо метки не существуют. Возможные значения:y— отображать ошибки;n— не отображать ошибки.
-
Игнорировать метки в пределах всего кластера.
Если не указывать параметрns, то метка заблокируется для всех новых и уже существующих ВЦОД: в новый ВЦОД метку добавить будет нельзя, а в уже существующих ВЦОД новые виртуальные кластеры будут создаваться без этой метки.Внимание
Игнорировать можно те метки, которые были предварительно делегированы во ВЦОД
где
labels— список меток для игнорирования;ns— список ВЦОД. При значении*метки будут автоматически помечены как игнорируемые во всех ВЦОД кластера, куда они были делегированы.
-
Сделать обычную метку меткой-ограничением
Меткам, указанным в
labels, будет присвоено ограничениеNoSchedule. -
Сделать из метки-ограничения обычную метку
-
Удалить метки кластера
Примечание
При удалении метки предварительно будет произведена попытка ее открепления со всех узлов кластера
где
labels— список меток для удаления.
Управлять метками во ВЦОД
Ограничения работы с метками во ВЦОД
- При создании нового ВЦОД и при наличии в кластере базовой метки
key=baseи метки сервисного обслуживанияsystem_drain_node=yesони будут автоматически делегированы в созданный ВЦОД. - Во ВЦОД нельзя делегировать метки, игнорируемые в пределах кластера.
- При удалении ВЦОД все записи о делегированных ему метках удаляются.
- Общие ограничения описаны выше.
Операции с метками во ВЦОД
Примечание
Действия выполняются пользователем с ролью Администратор кластера во ВЦОД управления
-
Делегировать метки в заданные ВЦОД
где
ns— список имен ВЦОД. При значении*метка будет делегирована на все ВЦОД;labels— список делегируемых меток. Задается в форматеkey=value.
-
Просмотреть метки во ВЦОД
Внимание
Пользователи могут видеть метки только ВЦОД, в котором они находятся.
При попытке запроса информации о других ВЦОД будет выдаваться ошибка.
Исключение — ВЦОД управлениягде
-
ns— список имен ВЦОД для просмотра их меток.
Администраторы кластераadminsмогут просмотреть метки всех ВЦОД кластера, добавив флаг--ns *.
Чтобы ограничить вывод меток для определенных ВЦОД, администратор кластера должен указать их имена в--ns.
Пользователям с другими ролями доступен просмотр меток только в своем ВЦОД без указания флага--ns. -
filter— фильтрация меток. Возможные значения:a— all, все метки;i— ignored, игнорируемые метки;u— unignored, все метки, кроме игнорируемых.
-
-
Просмотр меток со списками ВЦОД, в которые они делегированы
где
-
ns— список имен ВЦОД для просмотра делегированных меток.
Администраторы кластераadminsмогут просмотреть делегированные метки всех ВЦОД кластера, добавив флаг--ns *.
Чтобы ограничить вывод меток для определенных ВЦОД, администратор кластера должен указать их имена в--ns.
Пользователям с другими ролями доступен просмотр делегированных меток только в своем ВЦОД без указания флага--ns. -
filter— фильтрация меток. Возможные значения:a— all, все метки;i— ignored, игнорируемые метки;u— unignored, все метки, кроме игнорируемых.
-
-
Игнорировать метки в пределах заданных ВЦОД
Внимание
Игнорировать можно те метки, которые были предварительно делегированы во ВЦОД
где
labels— список меток для игнорирования;ns— список ВЦОД. При значении*метки будут автоматически помечены как игнорируемые во всех ВЦОД кластера, куда они были делегированы.
Термины и определения содержатся в статьях: