Из чего состоит control plane в Kubernetes?
🔹 kube-apiserver
-
Это центральная точка входа для всех команд и взаимодействия с кластером.
-
Работает как REST API-сервер: принимает запросы от
kubectl, контроллеров, других компонентов, аутентифицирует и авторизует их. -
Все изменения (например, создать Pod или Deployment) проходят именно через
kube-apiserver. -
Обеспечивает валидацию данных и взаимодействие с
etcd(чтение и запись состояния кластера).
🔹 etcd
-
Распределённое, консистентное key-value хранилище.
-
В нём хранится всё состояние кластера: конфигурации, спецификации подов, секреты, манифесты и пр.
-
Использует алгоритм консенсуса Raft, чтобы гарантировать согласованность данных даже при сбоях.
-
Если потерять данные в
etcd, кластер придётся поднимать с нуля (поэтому обычно делают регулярные бэкапы).
🔹 kube-controller-manager
-
Запускает набор контроллеров — фоновых процессов, которые следят за состоянием кластера.
-
Каждый контроллер отвечает за свой ресурс:
-
Node Controller — следит за состоянием узлов (online/offline).
-
Replication Controller — гарантирует нужное количество подов.
-
Endpoint Controller — обновляет объекты Endpoints для сервисов.
-
Service Account & Token Controllers — управляют учётными данными подов.
-
-
Главная идея: наблюдать за текущим состоянием (current state) и приводить его к желаемому (desired state), описанному в манифестах.
🔹 kube-scheduler
-
Отвечает за выбор подходящего узла (node) для запуска пода.
-
Принимает во внимание:
-
доступные ресурсы (CPU, RAM),
-
ограничения (nodeSelector, affinity/anti-affinity, taints/tolerations),
-
политики приоритета.
-
-
Важно: scheduler только выбирает узел, а запуск пода делает kubelet на worker-ноде.
