Ответ
Control Plane (раньше назывался Master) — это мозг кластера Kubernetes, отвечающий за глобальные решения (планирование, реакцию на события) и хранение состояния. В продакшн-средах его компоненты обычно запускаются на нескольких машинах для отказоустойчивости.
Основные компоненты:
- kube-apiserver — фронтенд Control Plane. Это единственный компонент, с которым взаимодействуют все остальные (kubectl, kubelet, контроллеры). Он валидирует и конфигурирует данные для объектов API (поды, сервисы и т.д.). Его горизонтальное масштабирование — ключ к масштабированию всего кластера.
- etcd — распределённое, надёжное key-value хранилище, используемое как единственный источник истины для всех данных кластера. В нём хранятся конфигурации и текущее состояние всех объектов.
- kube-scheduler — отслеживает вновь созданные поды, у которых не назначена нода, и выбирает для них лучшую ноду для запуска на основе политик, требований к ресурсам, affinity/anti-affinity правил.
- kube-controller-manager — запускает в себе множество контроллеров, которые в цикле следят за текущим состоянием кластера и приводят его к желаемому.
- Node Controller: Отвечает за обнаружение и реакцию на недоступность нод.
- Replication Controller: Поддерживает корректное количество реплик для каждого объекта ReplicaSet.
- Endpoints Controller: Заполняет объекты Endpoints (связывает сервисы и поды).
- Service Account & Token Controllers: Создают учётные записи и API-токены для новых пространств имён.
- 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-нодах.