Метки (labels) в Kubernetes
Метки - это пары ключ/значение (key/value), которые прикрепляются к объектам, таким как модули (pods). Метки предназначены для указания идентифицирующих атрибутов объектов, которые являются значимыми и релевантными для пользователей, но не подразумевают семантику основной системы. Метки могут использоваться для организации и выбора подмножеств объектов. Метки могут быть прикреплены к объектам во время создания и впоследствии добавлены и изменены в любое время. Каждый объект может иметь набор меток ключ/значение. Каждый ключ должен быть уникальным для данного объекта.
"metadata": {
"labels": {
"key1" : "value1",
"key2" : "value2"
}
}
Метки позволяют выполнять эффективные запросы и наблюдения, и идеально подходят для использования в пользовательском интерфейсе и CLI. Неидентифицирующая информация должна быть записана с использованием аннотаций.
Мотивация
Метки позволяют пользователям отображать свои организационные структуры в системные объекты в слабосвязанной форме, не требуя от клиентов сохранения этих сопоставлений.
Развертывания сервисов и конвейеры пакетной обработки (batch processing pipelines) часто являются многомерными объектами (например, несколькими разделами (partition) или развертываниями, несколькими треками релиза (multiple release tracks), несколькими уровнями (tiers), несколькими микросервисами на уровень). Управление часто требует сквозных операций, которые нарушают инкапсуляцию строго иерархических представлений, особенно жестких иерархий, определяемых инфраструктурой, а не пользователями.
Примеры меток:
"release" : "stable", "release" : "canary"
"environment" : "dev", "environment" : "qa", "environment" : "production"
"tier" : "frontend", "tier" : "backend", "tier" : "cache"
"partition" : "customerA", "partition" : "customerB"
"track" : "daily", "track" : "weekly"
Это всего лишь примеры часто используемых меток; Вы можете разрабатывать свои собственные соглашения. Имейте в виду, что метка Key должна быть уникальной для данного объекта.
Синтаксис и набор символов
Метки являются парами ключ/значение. Допустимые ключи метки имеют два сегмента: необязательный префикс и имя, разделенные косой чертой (/). Сегмент имени является обязательным и должен состоять из 63 символов или менее, начиная с буквенно-цифрового символа ([a-z0-9A-Z]) и заканчивая дефисами (-), символами подчеркивания (_), точками (.) и буквенно-цифровыми символами между ними. Префикс является необязательным. Если указан, префикс должен быть субдоменом DNS: набор меток DNS, разделенных точками (.), всего не более 253 символов, за которыми следует косая черта (/).
Если префикс пропущен, предполагается, что метка Key является личной (private) для пользователя. Компоненты автоматизированной системы (например, kube-scheduler, kube-controller-manager, kube-apiserver, kubectl или другая сторонняя автоматизация), которые добавляют метки к объектам конечного пользователя, должны указывать префикс.
Префиксы kubernetes.io/ и k8s.io/ зарезервированы для основных компонентов Kubernetes.
Допустимые значения меток должны быть не более 63 символов и должны быть пустыми или начинаться и заканчиваться буквенно-цифровым символом ([a-z0-9A-Z]) с дефисом (-), подчеркиванием (_), точками (.) и буквенно-цифровыми символами между ними.
Например, вот файл конфигурации для Pod с двумя метками environment: production и app: nginx:
apiVersion: v1
kind: Pod
metadata:
name: label-demo
labels:
environment: production
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Читайте также:
- Управление Kubernetes объектами
- Имена объектов в Kubernetes
- Пространства имен (namespaces) в Kubernetes
Комментарии
Отправить комментарий