Что такое Control plane в Kubernetes
В Kubernetes Control Plane — это ключевой компонент архитектуры, который управляет всем кластером и состоит из нескольких ключевых компонентов:
- API Server — основной интерфейс для взаимодействия с Kubernetes через REST API. Принимает и проверяет команды от пользователей.
- etcd — распределенное хранилище данных кластера, где хранятся все конфигурации, состояния объектов и их история.
- Controller Manager — контролирует и поддерживает состояние ресурсов, следит за подами, репликами, проверяет выполнение заданий.
- Scheduler — распределяет поды между нодами, анализируя их доступные ресурсы и требования.
- Cloud Controller Manager — взаимодействует с облачными провайдерами для управления инфраструктурными ресурсами, такими как балансировщики нагрузки и хранилища.
Подробные компоненты:
- API Server (kube-apiserver) — центральный компонент Control Plane, принимающий запросы на управление кластером. Любые команды (например, развернуть под или создать сервис) проходят через API Server. Он валидирует команды и обновляет состояние объектов в etcd.
- etcd — это ключевое/значение (key-value) хранилище данных в Kubernetes. Оно хранит всю информацию о состоянии кластера: конфигурацию подов, сервисов, сетей и других объектов. etcd поддерживает консенсус в распределенной системе, что гарантирует надежность хранения данных. Каждое изменение конфигурации кластера, создаваемое через API Server, фиксируется в etcd.
- Scheduler (kube-scheduler) — планировщик, который отвечает за выбор узлов для подов. Когда новый под создается, планировщик анализирует доступные ресурсы нод, и на основе политики распределяет под. Он принимает решения на основе метрик использования CPU, памяти и других факторов.
- Controller Manager — это набор контроллеров, который управляет состоянием объектов в кластере, таких как ReplicaSet, DaemonSet и Jobs. Каждый контроллер следит за своим ресурсом и предпринимает действия, если состояние ресурса отклоняется от ожидаемого.
- Cloud Controller Manager — этот компонент используется, когда Kubernetes разворачивается в облачной среде. Он управляет специфическими ресурсами облачных провайдеров (например, балансировщиками нагрузки или сетевыми интерфейсами).
Работа и взаимодействие
Control Plane координирует взаимодействие всех компонентов и следит за состоянием объектов внутри кластера. Например, при создании Deployment манифеста API Server получает запрос, сохраняет его в etcd, а Scheduler и Controller Manager затем взаимодействуют для того, чтобы распределить поды на нужные ноды и контролировать их состояние.
Control Plane также отвечает за автошкалирование и управление отказоустойчивостью — если одна из нод выходит из строя, Control Plane автоматически перераспределяет задачи на другие доступные узлы.