Skip to content

labels

Labels (метки) - пары ключ-значение, созданы для того, чтобы присваивать те или иные отметки пользовательским ресурсам кластера k8s. Размеченные ресурсы удобно выбирать с помощью селекторов.

Каждый размечаемый объект кластера может быть отмечен несколькими labels. В контексте разметки отдельного объекта каждый ключ должен иметь уникальное значение.

Метка - дополнительный идентификатор ресурса

Самым простым примером использования меток является: service, который создает сетевую связь с deployment, используя selector по назначенным подам меткам.

# Отмечаем deployment с помощью определенной метки
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-name
spec:
  replicas: 1
  selector: # Указываем поды скакими метками нужно искать
    matchLabels:
      app: my-label1
  template:
    metadata:
      labels: # Назначаем метки создаваемым подам
        app: my-label1
    spec:
...

# Сервису указываем поды с какими метками ему следует искать
apiVersion: v1
kind: Service
metadata:
  name: service-name
spec:
  selector: # В блоке селектор указываем поды с какими метками следует искать
    app: my-label1
  ports:
    - port: 81
      targetPort: 80
Работа с метками с помощью kubectl
# Назначаем метки конкретному поду из командной строки
kubectl label pod <pod-name> key1=value1 key2=value2

# Просматриваем метки конкретного ресурса
kubectl get pod <pod-name> --show-labels

# Производим просмотр ресурсов, фильтрую их с помощью меток
kubectl get pods -l key1=value1

# Удаляем конкретную метку
kubectl label pod <pod-name> key1-
Работает со сложными selector
# Уточняем выбор указывая несколько меток в селекторе
kubectl get pods -l app=web,env=production

# Исключаем из набора с пощью !=
kubectl get pods -l app!=demo

annotations

Annotations - так же являются парами ключ-значение, но в отличии от меток, информация записанная в аннотациях не несет полезной нагрузки внутри кластера k8s (не используется кубером для управления ресурсами), и применяется лишь в сторонних инструментах.

Примеры использования аннотаций:

  • В аннотациях может быть размещена информация полезная для ci/cd систем
  • Кастомизация настроек внешних контроллеров