ENIGMA AI
ENIGMA AI

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

встречается 9× Kubernetes middle architecture

Как ответить

Архитектура Kubernetes строится вокруг двух ключевых ролей: control plane (управляющая плоскость) и worker nodes (рабочие узлы). Control plane принимает решения и управляет состоянием кластера, а worker nodes запускают контейнеры. Если коротко — control plane решает, что и где запускать, а worker nodes это выполняют.

Control plane компоненты:

  • kube-apiserver — единственная точка входа для всех компонентов и CLI (kubectl). Это REST API, который валидирует и обрабатывает запросы. Без него кластер не работает. В production обычно ставят за балансировщиком, чтобы не было единой точки отказа.
  • etcd — распределённое key-value хранилище, где лежит всё состояние кластера: поды, сервисы, конфиги, секреты. etcd — мозг кластера. Если etcd упадёт, кластер перестанет быть согласованным. Важно: etcd — единственный stateful компонент, его нужно бэкапить.
  • kube-scheduler — решает, на какой worker node запустить новый под. Учитывает ресурсы (CPU, memory), affinity/anti-affinity правила, taints/tolerations, и распределение подов по нодам. По умолчанию — round-robin с учётом занятости.
  • kube-controller-manager — набор контроллеров, которые следят за состоянием кластера. Например, ReplicaSet controller проверяет, что нужное количество подов запущено, Node controller реагирует на падение нод, Endpoint controller обновляет endpoint’ы сервисов.
  • cloud-controller-manager (опционально) — интеграция с облачным провайдером: создаёт балансировщики, диски, роутит трафик. В bare-metal не нужен.

Worker node компоненты:

  • kubelet — агент на каждой ноде. Получает от apiserver’а описание подов и гарантирует, что контейнеры запущены и работают. Если под упал — kubelet перезапускает его. Основной исполнитель на ноде.
  • kube-proxy — обрабатывает сетевые правила на ноде: iptables или IPVS. Обеспечивает балансировку трафика между подами сервиса. Без него Service’ы не будут работать.
  • Container runtime — программа, которая запускает контейнеры. Раньше по умолчанию был Docker, сейчас чаще containerd или CRI-O. kubelet общается с runtime через CRI (Container Runtime Interface).

Дополнительно:

  • Pod — минимальная единица, группа из одного или нескольких контейнеров с общим storage и сетью. В production обычно один контейнер на под.
  • Service — абстракция, которая даёт стабильный IP и DNS для группы подов. Бывают ClusterIP (внутри кластера), NodePort (доступ снаружи через порт ноды), LoadBalancer (облачный балансировщик).
  • Ingress — HTTP/HTTPS маршрутизация снаружи внутрь кластера. Часто используют nginx-ingress или traefik.

На практике для middle-разработчика важно понимать: при деплое приложения ты работаешь с манифестами (Deployment, Service, ConfigMap), а kube-apiserver и scheduler уже решают, где и как это запустить. Если под не стартует — первым делом смотришь логи kubelet на ноде и статус etcd.

Ключевые тезисы

  • Control plane: kube-apiserver (API), etcd (хранилище состояния), scheduler (распределение подов), controller-manager (контроллеры).
  • Worker node: kubelet (агент), kube-proxy (сеть), container runtime (запуск контейнеров).
  • etcd — единственный stateful компонент, требует бэкапов и мониторинга.
  • Pod — минимальная единица, Service — стабильный доступ к подам, Ingress — внешний HTTP-роутинг.
  • kubelet — ключевой компонент для отладки проблем с подами: логи на ноде.

Что спросят дальше

  • — Что произойдёт, если etcd станет недоступен? Как это повлияет на работу кластера?
  • — Как kube-scheduler принимает решение, на какую ноду поставить под? Какие параметры учитывает?
  • — Чем отличается Deployment от StatefulSet? В каком случае стоит использовать StatefulSet?

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение