Какие есть компоненты Control Plane и Data Plane в кластере Kubernetes?

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

Ответ

Архитектура Kubernetes четко разделена на две логические плоскости:

Control Plane (Управляющая плоскость)

Отвечает за глобальные решения о кластере (планирование, управление) и обработку API-запросов. Это "мозг" кластера.

  • kube-apiserver: Фронтенд Control Plane. Единственный компонент, с которым взаимодействуют пользователи (через kubectl) и другие компоненты. Валидирует и обрабатывает REST-запросы.
  • etcd: Высокодоступное key-value хранилище, служащее единственным источником истины для всего состояния кластера (конфиги, секреты, метаданные подов).
  • kube-scheduler: Наблюдает за вновь созданными подами без назначенной ноды и выбирает для них оптимальную ноду на основе политик (ресурсы, affinity/anti-affinity правила).
  • kube-controller-manager: Запускает набор контроллеров, которые в цикле сверяют текущее состояние кластера с желаемым (описанным в etcd).
    • Node Controller: Реагирует на выход нод из строя.
    • Replication Controller: Поддерживает корректное количество реплик для Deployment/ReplicaSet.
  • cloud-controller-manager (опционально): Связывает кластер с API облачного провайдера (AWS, GCP, Azure) для управления такими ресурсами, как балансировщики нагрузки или диски.

Data Plane (Плоскость данных / Рабочие ноды)

Отвечает за выполнение рабочих нагрузок (контейнеров).

  • kubelet: Агент, работающий на каждой рабочей ноде. Получает спецификации подов от API-сервера и обеспечивает, чтобы описанные в них контейнеры были запущены и здоровы.
  • kube-proxy: Сетевой прокси, поддерживающий правила сетевой маршрутизации на ноде. Обеспечивает абстракцию Service (виртуальный IP и балансировку нагрузки между подами).
  • Container Runtime: Программное обеспечение, которое запускает контейнеры (например, containerd, CRI-O). Kubelet взаимодействует с ним через CRI (Container Runtime Interface).

Аналогия: Control Plane — это диспетчерская аэропорта (управляет рейсами), а Data Plane — это взлетно-посадочные полосы и самолеты (выполняют работу).