Что такое селектор в Kubernetes?

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

Ответ

Селектор (Selector) в Kubernetes — это механизм для выбора объектов (например, Pod, Service, ReplicaSet) на основе их меток (labels). Он определяет, к каким ресурсам применяются правила или операции.

Основные типы селекторов:

  • matchLabels — выбор объектов, у которых метки точно соответствуют указанным парам ключ-значение.
  • matchExpressions — выбор на основе более сложных условий (In, NotIn, Exists, DoesNotExist).

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

  1. В манифесте Deployment для связи с Pod-ами:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
          tier: frontend
      template:
        metadata:
          labels:
            app: nginx
            tier: frontend
        # ... spec контейнера
  2. В командах kubectl для фильтрации ресурсов:

    # Получить все Pods с меткой app=nginx
    kubectl get pods -l app=nginx
    
    # Получить Pods, где метка 'environment' существует, а 'tier' равна 'frontend'
    kubectl get pods -l 'environment, tier=frontend'

Селекторы — это фундаментальный механизм для декларативного управления связями между объектами в кластере.