Архитектура кластера

Кластер делится на «мозг» (control plane) и «руки» (worker-узлы) — разберём роли каждого компонента.

Кластер — это набор серверов (узлов), которыми Kubernetes управляет как единым целым.

Кластер состоит из узлов двух типов. Control plane принимает решения (что и где запускать), а worker-узлы выполняют работу — на них крутятся ваши контейнеры.

Control plane — управляющий слой

Здесь живут компоненты, которые принимают все решения о кластере:

  • API server — единая точка входа. Любая команда kubectl, любой контроллер общается с кластером только через API server. Он принимает запросы, проверяет их и сохраняет состояние в etcd.
  • etcd — распределённое key-value хранилище. Это «единственный источник правды»: всё состояние кластера (какие объекты есть, чего вы хотите) лежит здесь. Потеря etcd = потеря кластера, поэтому его бэкапят.
  • Scheduler (планировщик) — решает, на какой worker-узел поместить новый под, учитывая свободные CPU/память и ограничения.
  • Controller manager — набор контроллеров, каждый из которых крутит свой reconciliation loop: следит за объектами и приводит реальность к желаемому состоянию (например, поддерживает нужное число реплик).

Worker-узлы — рабочий слой

На рабочих узлах запускаются контейнеры приложений. Каждый узел содержит:

  • kubelet — агент на узле. Получает от API server задание («запусти такие-то контейнеры») и следит, чтобы они работали. Это «руки» control plane на конкретной машине.
  • container runtime — собственно движок контейнеров (containerd, CRI-O), который запускает образы. Docker как runtime в новых версиях не используется напрямую.
  • kube-proxy — настраивает сеть на узле, чтобы трафик доходил до нужных подов (правила маршрутизации для сервисов).

Как это работает вместе

Поток на примере «запусти приложение»:

  1. Вы шлёте манифест в API server через kubectl apply.
  2. API server сохраняет желаемое состояние в etcd.
  3. Scheduler видит новый под без узла и выбирает подходящий worker.
  4. kubelet на этом узле запускает контейнер через runtime.
  5. Контроллеры следят, чтобы фактическое состояние оставалось равным желаемому.
КомпонентГдеРоль
API servercontrol planeединая точка входа, валидация
etcdcontrol planeхранилище состояния кластера
schedulercontrol planeвыбор узла для пода
controller managercontrol planereconciliation loops
kubeletworkerзапуск и контроль контейнеров
kube-proxyworkerсетевая маршрутизация

Итог

  • Control plane принимает решения, worker-узлы выполняют работу.
  • API server — единственная точка входа, etcd — хранилище правды.
  • kubelet на каждом worker запускает контейнеры по заданию от control plane.
Проверьте себя
1. Какой компонент является единой точкой входа в кластер?
Aetcd
Bkubelet
CAPI server
Dscheduler
2. Где Kubernetes хранит всё состояние кластера?
AВ etcd
BВ kubelet
CВ логах контейнеров
DВ container runtime
3. Чем занимается kubelet?
AХранит данные кластера
BВыбирает узел для нового пода
CЗапускает и контролирует контейнеры на своём узле
DПринимает команды kubectl
4. Что делает scheduler?
AМаршрутизирует сетевой трафик
BРешает, на каком узле разместить новый под
CХранит секреты
DСобирает образы
Поддержать проект