Что такое kubelet в Kubernetes и за что он отвечает?

«Что такое kubelet в Kubernetes и за что он отвечает?» — вопрос из категории Kubernetes, который задают на 26% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Kubelet — это критически важный системный демон (агент), который работает на каждом узле (Node) в кластере Kubernetes. Его основная задача — обеспечивать жизненный цикл подов (Pods), назначенных данному узлу.

Основные обязанности kubelet:

  1. Получение спецификаций подов: Kubelet взаимодействует с API-сервером Kubernetes (или напрямую через файловую систему или HTTP) и получает PodSpecs — описания того, какие контейнеры должны запускаться.
  2. Запуск и поддержание работы контейнеров: Он использует низкоуровневый контейнерный runtime (например, containerd или CRI-O) для создания, запуска и остановки контейнеров внутри подов согласно спецификации.
  3. Выполнение проверок жизнеспособности (Probes): Kubelet регулярно выполняет livenessProbe и readinessProbe, определенные в манифесте пода. Если livenessProbe падает, kubelet перезапускает контейнер. Если readinessProbe падает, kubelet удаляет IP адрес пода из эндпоинтов сервиса.
  4. Мониторинг и репортинг: Kubelet постоянно отслеживает состояние подов и ресурсов узла (CPU, память) и отправляет эти метрики обратно на API-сервер, что позволяет kubectl get nodes и другим компонентам видеть актуальное состояние.
  5. Управление томами (Volumes) и секретами: Монтирует необходимые тома (например, hostPath, emptyDir, или сетевые тома типа awsElasticBlockStore) и загружает секреты (Secrets) и конфигурационные карты (ConfigMaps) в поды.

Пример диагностики: Если под завис в состоянии Pending, проблема может быть не в kubelet. Но если под на узле в состоянии CrashLoopBackOff, первым делом проверяю логи kubelet на этом узле:

# Просмотр логов kubelet
sudo journalctl -u kubelet -f --since "5 minutes ago"

# Проверка статуса службы kubelet
sudo systemctl status kubelet

Kubelet — это «исполнительный механизм» на узле, связывающий желаемое состояние (от Control Plane) с фактическим состоянием контейнеров.