Что такое лейблы (метки) в Kubernetes?

«Что такое лейблы (метки) в Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Лейблы (Labels) — это пары ключ-значение, которые присваиваются объектам Kubernetes (подам, нодам, сервисам, деплойментам и т.д.) для организации и селекции. Они не несут семантического значения для ядра Kubernetes, но позволяют пользователям и инструментам структурировать свои объекты.

Основное применение:

  • Идентификация и группировка: Например, для обозначения компонентов приложения (app: frontend, tier: backend).
  • Управление жизненным циклом: Разделение по окружениям (env: production, env: staging).
  • Выбор объектов: Селекторы (Selectors) в деплойментах, сервисах и DaemonSets используют лейблы для определения, с какими подами они работают.
  • Масштабирование и отладка: Упрощают фильтрацию объектов в командах kubectl get pods -l app=api.

Пример в манифесте пода:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
  labels:
    app: my-application
    version: "v1.2"
    environment: production
spec:
  containers:
  - name: nginx
    image: nginx:1.21

Пример селектора в сервисе:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-application # Сервис будет направлять трафик на все поды с этим лейблом
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376

Аннотации (Annotations) — это схожий механизм для хранения произвольной нефункциональной метаинформации (описание, контактные данные, контрольные суммы), которая не используется для селекции.