Из чего состоит Control Plane (панель управления) в Kubernetes?

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

Ответ

Control Plane (раньше назывался Master) — это мозг кластера Kubernetes, отвечающий за глобальные решения (планирование, реакцию на события) и хранение состояния. В продакшн-средах его компоненты обычно запускаются на нескольких машинах для отказоустойчивости.

Основные компоненты:

  1. kube-apiserver — фронтенд Control Plane. Это единственный компонент, с которым взаимодействуют все остальные (kubectl, kubelet, контроллеры). Он валидирует и конфигурирует данные для объектов API (поды, сервисы и т.д.). Его горизонтальное масштабирование — ключ к масштабированию всего кластера.
  2. etcd — распределённое, надёжное key-value хранилище, используемое как единственный источник истины для всех данных кластера. В нём хранятся конфигурации и текущее состояние всех объектов.
  3. kube-scheduler — отслеживает вновь созданные поды, у которых не назначена нода, и выбирает для них лучшую ноду для запуска на основе политик, требований к ресурсам, affinity/anti-affinity правил.
  4. kube-controller-manager — запускает в себе множество контроллеров, которые в цикле следят за текущим состоянием кластера и приводят его к желаемому.
    • Node Controller: Отвечает за обнаружение и реакцию на недоступность нод.
    • Replication Controller: Поддерживает корректное количество реплик для каждого объекта ReplicaSet.
    • Endpoints Controller: Заполняет объекты Endpoints (связывает сервисы и поды).
    • Service Account & Token Controllers: Создают учётные записи и API-токены для новых пространств имён.
  5. cloud-controller-manager (опционально) — позволяет связать логику Control Plane с API конкретного облачного провайдера (AWS, GCP, Azure). Отвечает за управление облачными ресурсами, такими как балансировщики нагрузки (LoadBalancer Service) или диски (PersistentVolumes).

Пример высокодоступной архитектуры Control Plane (3 ноды):

                   Load Balancer (VIP:6443)
                  /       |       
                 /        |        
          Master-1    Master-2    Master-3
          (API, etcd) (API, etcd) (API, etcd)

Компоненты обычно запускаются как статические поды (static pods), управляемые kubelet на самих master-нодах.