ChiMate.aiТВОЙ ИИ АССИСТЕНТ
← Все вопросы
Какие основные компоненты входят в архитектуру Kubernetes и за что отвечает каждый из них?
РедкоMiddleDevOps

Какие основные компоненты входят в архитектуру Kubernetes и за что отвечает каждый из них?

Коротко
Кластер Kubernetes делится на control plane (управляющий слой), который принимает глобальные решения, и worker-узлы, которые запускают рабочую нагрузку. Control plane: kube-apiserver, etcd, kube-scheduler, kube-controller-manager и опциональный cloud-controller-manager; узлы: kubelet, kube-proxy и container runtime.

Кластер Kubernetes состоит из control plane (управляющего слоя) и набора рабочих машин — узлов (nodes), на которых запускаются Pod'ы. Для запуска Pod'ов нужен минимум один worker-узел.

Концептуально Kubernetes декларативен: вы описываете желаемое состояние через API server (оно хранится в etcd), а контроллеры в непрерывных циклах согласования (reconciliation loops) следят за расхождениями и приводят фактическое состояние к желаемому.

Компоненты control plane

Управляющий слой принимает глобальные решения о кластере (например, планирование) и реагирует на события. В продакшене его обычно разворачивают на нескольких машинах для отказоустойчивости.

  • kube-apiserver — ядро, предоставляющее HTTP API Kubernetes. Это «фронтенд» control plane и единая точка входа: через него идёт вся аутентификация, авторизация, валидация запросов и чтение/запись состояния. Масштабируется горизонтально. В обычных развёртываниях это единственный Kubernetes-компонент, который напрямую читает и пишет состояние кластера в etcd; остальные компоненты работают с состоянием через API server.
  • etcd — согласованное (strongly consistent) и высокодоступное key-value хранилище, используемое как backing store для всех данных кластера: конфигурации, состояния и метаданных. etcd обязателен и является единственным источником истины — его потеря означает потерю всего состояния кластера, поэтому его запускают с кворумом (нечётное число членов) и регулярно резервируют.
  • kube-scheduler — находит Pod'ы, ещё не привязанные к узлу, и назначает каждый из них на подходящий узел с учётом ресурсов, ограничений и политик.
  • kube-controller-manager — запускает контроллеры, реализующие поведение API (Node controller, Job controller, EndpointSlice controller и др.). Контроллеры следят за желаемым состоянием и приводят к нему фактическое.
  • cloud-controller-manager (опционально) — интегрирует кластер с конкретным облачным провайдером, вынося облачную логику отдельно от ядра Kubernetes.

Компоненты узла (node components)

Запускаются на каждом узле, поддерживают работу Pod'ов и обеспечивают среду выполнения.

  • kubelet — агент, гарантирующий, что Pod'ы и их контейнеры запущены и работают согласно спецификации; следит за API server, запускает контейнеры через runtime, монтирует тома, выполняет liveness/readiness-проверки и репортит статус узла.
  • kube-proxy — реализует сетевое взаимодействие Services, программируя правила iptables или IPVS на узлах, чтобы трафик к Service шёл на нужные Pod'ы. Помечен как опциональный, потому что некоторые CNI-плагины (например, Cilium в режиме eBPF) берут его функции на себя, но в стандартном кластере он необходим.
  • Container runtime — ПО, отвечающее за запуск контейнеров (containerd, CRI-O и др., через интерфейс CRI).

Addons

Дополнительно функциональность расширяют аддоны: cluster DNS (по умолчанию CoreDNS), Dashboard, мониторинг ресурсов, централизованное логирование.

Частый вопрос на собеседовании: всё взаимодействие идёт через API server — scheduler, контроллеры и kubelet'ы только наблюдают за ним и реагируют, что делает API server критической точкой кластера.

ArchitectureContainersKubernetes