Официально кластер Kubernetes включает control plane и одну или несколько worker-nod, на которых запускаются приложения.

Описание основных компонентов:
Control plane
Управляет кластером и принимает решения: где запустить Pod, сколько реплик должно работать и что делать при сбое.
kube-apiserver
Главная точка взаимодействия с Kubernetes API. Через него работают: - kubectl - пользователи и администраторы - другие компоненты Kubernetes - внешние приложения и автоматизация
etcd
Распределённое key-value хранилище. В нём сохраняется состояние кластера: - Nodes - Pods - Deployments - Services - ConfigMaps - Secrets - настройки и метаданные Kubernetes Если etcd потерян, control plane может потерять информацию о состоянии кластера.
kube-scheduler
Выбирает Node, на которой будет запущен новый Pod. При выборе учитываются: - доступные CPU и RAM - требования Pod - ограничения и affinity - taints и tolerations - состояние Node Сам scheduler не запускает контейнер — он только назначает Pod подходящей Node.
kube-controller-manager
Запускает контроллеры, которые постоянно сравнивают желаемое состояние с фактическим и исправляют отклонения. Например: - Deployment должен иметь 3 Pod’а - один Pod завершился - controller создаёт новый Pod. Контроллеры работают как цикл наблюдения и приведения текущего состояния к желаемому.
cloud-controller-manager
Необязательный компонент для облачных сред. Он связывает Kubernetes с облачным провайдером и может управлять: - облачными Node - балансировщиками - дисками - маршрутами сети.
Worker Node
Сервер, на котором реально выполняются Pod’ы и контейнеры.
kubelet
Агент Kubernetes на каждой Node - получает описание Pod’ов, запускает контейнеры через container runtime, следит за их состоянием, выполняет health checks, сообщает control plane состояние Node и Pod’ов. Коротко: kubelet следит, чтобы нужные контейнеры действительно работали.
kube-proxy
Отвечает за сетевые правила для Kubernetes Service. Он помогает направлять трафик от Service к нужным Pod’ам. В современных кластерах его функции могут частично заменяться другими сетевыми решениями, но классически kube-proxy считается компонентом Node.
Container Runtime
Компонент, который непосредственно запускает контейнеры. Примеры: - containerd - CRI-O Kubernetes взаимодействует с runtime через интерфейс CRI. Docker Engine напрямую обычно не используется как runtime в современных Kubernetes-кластерах.