middle
Какова архитектура кластера Kubernetes?
Кластер Kubernetes состоит из Master Node (управляющий узел, Control Plane) и Worker Nodes (рабочие узлы).
Master Node (Control Plane)
Управляющий узел отвечает за состояние всего кластера и принятие решений:
- API Server (
kube-apiserver) — центральный компонент, точка входа для всех REST-запросов. Через него работаетkubectl, другие компоненты кластера и внешние системы. Все операции (создание Pod, Service и т.д.) проходят через API Server - etcd — распределённое хранилище типа «ключ-значение». Хранит всё состояние кластера: информацию о нодах, подах, конфигурации, секретах. Это «источник истины» для кластера
- Scheduler (
kube-scheduler) — отвечает за назначение Pod’ов на Worker Node. При создании нового Pod’а Scheduler анализирует доступные ресурсы на нодах, affinity/anti-affinity правила, taints/tolerations и выбирает оптимальный узел - Controller Manager (
kube-controller-manager) — запускает контроллеры, которые следят за состоянием кластера и приводят его к желаемому состоянию. Примеры контроллеров: ReplicaSet Controller, Deployment Controller, Node Controller, Job Controller
Worker Node
Рабочий узел, на котором выполняются контейнеры с приложениями:
- kubelet — агент, работающий на каждой Worker Node. Получает от API Server описание Pod’ов, которые должны запускаться на данной ноде, и обеспечивает их запуск и работу
- kube-proxy — сетевой прокси на каждой ноде. Обеспечивает сетевое взаимодействие между Pod’ами и Service’ами. Управляет правилами iptables/IPVS для маршрутизации трафика
- Container Runtime — среда выполнения контейнеров. Kubernetes поддерживает несколько рантаймов через стандарт CRI (Container Runtime Interface):
containerd,CRI-O. Docker как рантайм был исключён начиная с Kubernetes 1.24, но Docker-образы по-прежнему полностью совместимы
Схема взаимодействия
Пример
+-------------------+
| Master Node |
| (Control Plane) |
| |
kubectl -------->| API Server |
| Scheduler |
| Controller Mgr |
| etcd |
+--------+----------+
|
+-------------+-------------+
| |
+--------v--------+ +--------v--------+
| Worker Node 1 | | Worker Node 2 |
| | | |
| kubelet | | kubelet |
| kube-proxy | | kube-proxy |
| Container RT | | Container RT |
| | | |
| [Pod] [Pod] | | [Pod] [Pod] |
+-----------------+ +-----------------+
На собеседовании: достаточно назвать 4 компонента Control Plane (API Server, etcd, Scheduler, Controller Manager) и 3 компонента Worker Node (kubelet, kube-proxy, Container Runtime). Частая ошибка — путать kubelet и kube-proxy или забыть про etcd.