Kubelet не является компонентом control plane, но играет ключевую роль в работе Kubernetes-кластера.
Kubelet — это агент, который работает на каждом узле Kubernetes-кластера. Он обеспечивает запуск контейнеров в подах и их работу в соответствии со спецификациями. Kubelet непрерывно взаимодействует с kube-apiserver, проверяя и поддерживая состояние узлов и контейнеров. Kubelet также отвечает за запуск компонентов control plane.
Манифесты статических подов
Kubelet запускает компоненты control plane из манифестов статических подов, расположенных в директории /etc/kubernetes/manifests. В Deckhouse Kubernetes Platform kubelet обрабатывает в этой директории только файлы с расширением .yaml или .yml.
Файлы с другими расширениями, например kube-apiserver.backup, kube-apiserver.yaml.bak, swap-файлы редакторов или другие временные файлы, игнорируются. Это предотвращает случайную обработку резервных копий и файлов, не являющихся манифестами, как манифестов статических подов.
Взаимодействия kubelet
Для упрощения схемы приняты следующие допущения:
- На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
- Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.
- На схеме показан под
application, который представляет собой любой под в кластере: системный и пользовательский.
Взаимодействия kubelet изображены на следующей диаграмме:

Kubelet контролирует состояние контейнеров всех подов, запущенных на узле, относящихся как к пользовательским приложениям, так и к компонентам DKP, выполняя пробы Startup, Liveness и Readiness в соответствии со спецификацией пода. Подробнее о пробах можно узнать в документации Kubernetes.
Kubelet также взаимодействует со следующими компонентами:
- Containerd — отправляет команды для управления жизненным циклом контейнеров на узле, используя для этого Container Runtime Interface (CRI);
- Kubernetes-api-proxy — проксирует запросы к kube-apiserver, отправляемые на адрес
localhost. Входит в состав модуляcontrol-plane-manager; - Kube-apiserver-healthcheck — проверяет состояние kube-apiserver.
С kubelet взаимодействуют следующие компоненты:
-
Kube-apiserver:
- получение логов с подов (обработка команды
kubectl logs); - подключение к запущенным подам (обработка команды
kubectl exec); - переадресация портов (обработка команды
kubectl port-forward).
- получение логов с подов (обработка команды
-
Prometheus-main — собирает метрики kubelet.