Укажите источник меток
Режим ресурсов принимает объект, массив или тип List либо *List с массивом items. Используется только metadata.labels. Метки из шаблона Pod внутри Deployment автоматически не извлекаются.
Kubernetes
Проверьте синтаксис меток и узнайте, какие условия выполняются для каждого объекта.
Данные остаются в браузере. Подключения к кластеру, загрузки на сервер и сетевых запросов нет.
= · == · != · in · notin · key · !key. Запятая означает И; пустой селектор выбирает все объекты.
Пределы: JSON — 500 000 символов, селектор — 8 192, ресурсы — 500, условия — 64, метки на ресурс — 256.
Семантика: Kubernetes 1.35 / apimachinery v0.35.0; равенство, наборы и наличие ключа.
Ввод изменился. Перед экспортом повторите проверку.
Иногда селектор меток Kubernetes выбирает больше Pod, чем ожидалось. Условие env!=prod допускает и объект, у которого вообще нет ключа env. Прежде чем менять запрос или Service, полезно посмотреть результаты отдельных условий, а не только итоговое число совпадений.
В режиме меток читается весь объект, в режиме ресурсов — только metadata.labels. Ввод для каждого режима сохраняется отдельно. Поэтому метка с именем metadata не будет ошибочно принята за оболочку ресурса.
Этот селектор меток Kubernetes вычисляет все условия, даже если первое уже не выполнено. Pod веб-приложения в среде development может пройти app=web и !paused, но не попасть в набор окружений. Отчёт помогает найти конкретное расхождение, не удаляя фильтры наугад.
Метка со значением "" существует. У отсутствующего ключа значения нет вовсе. Эти состояния показаны отдельно, поэтому отрицательное условие не придётся ошибочно трактовать как проверку наличия метки.
Режим ресурсов принимает объект, массив или тип List либо *List с массивом items. Используется только metadata.labels. Метки из шаблона Pod внутри Deployment автоматически не извлекаются.
Замените production на development, затем удалите environment и сравните in с notin. Автопроверка запускается через 350 мс после остановки ввода. В ручном режиме доступны кнопка и Ctrl/Cmd + Enter.
Разверните ресурс, чтобы увидеть метки и все условия. На экран выводится по 50 объектов, но копирование и скачивание включают весь отчёт. Любое изменение ввода блокирует экспорт до получения нового результата.
Необязательный DNS-префикс состоит из строчных символов и не превышает 253 знака. Имя содержит 1–63 допустимых ASCII-символа; прописные буквы разрешены. Значение может быть пустым или содержать до 63 символов. Зарезервированный префикс сам по себе не нарушает синтаксис.
Селекторы меток поддерживают =, ==, !=, in и notin. Запятая между условиями означает И. Условие на основе набора позволяет перечислить альтернативы одного ключа внутри in. Несколько равенств с одним ключом сужают выбор, а не заменяют ИЛИ.
Сохраняются индекс, JSON-путь и переданные тип, пространство имён и имя. Отсутствующее или null-поле metadata либо labels считается пустым набором меток. Ресурсы с одинаковыми именами не объединяются, поэтому ни один объект не исчезает из отчёта.
При проверке «метки и селекторы» строки "01" и "1" остаются разными. Числа, логические значения и null не преобразуются в строки, а вызывают ошибку. Повторяющиеся ключи JSON тоже отклоняются, чтобы позднее значение не скрыло исходное.
Разделите условия запятыми: app=web,environment=production. Должны выполняться оба. Если у ключа есть DNS-префикс, сохраните его: app.kubernetes.io/name и name — разные метки.
Между разными ключами — нет. Для нескольких значений одного ключа используйте environment in (production,staging). Два равенства через запятую означают одновременное выполнение и могут не дать ни одного совпадения.
Да: в JSON это {"maintenance":""}. maintenance проверяет наличие ключа, maintenance= — наличие пустой строки, !maintenance — отсутствие ключа. Строковое maintenance in () тоже содержит одну пустую строку, а не набор без элементов.
Используйте !key и посмотрите число совпадений. Это отсутствие конкретного ключа, а не обязательно всех меток. Здесь считаются только переданные объекты; для общего числа по кластеру сначала получите полный список нужных ресурсов.
!= и notin допускают отсутствующий ключ. Если env должен существовать и отличаться от prod, напишите env,env!=prod. Объяснение условий показывает отдельно отсутствие ключа и наличие другого значения.
Остался вопрос о селекторе?
Запустите селектор меток Kubernetes для текущего JSON и разберите невыполненные условия перед изменением конфигурации рабочей нагрузки.