887просмотров
21.4%от подписчиков
18 марта 2026 г.
📷 ФотоScore: 976
💻 Kubelet — основной компонент, работающий на каждой ноде. Он не запускается как контейнер, а выполняется напрямую в системе как системный сервис (systemd-юнит). Его задача — превратить узел в полноценную единицу кластера, способную выполнять рабочую нагрузку. 🔵 Как работает? 1. Регистрация узла — При старте kubelet регистрирует узел в API-сервере, передавая информацию о ресурсах (CPU, память), IP-адресах и метках.
2. Получение заданий — Kubelet постоянно наблюдает за API-сервером. Как только появляется Pod, назначенный на его узел (поле spec.nodeName совпадает с именем узла), он приступает к запуску.
3. Запуск контейнеров — Kubelet не запускает контейнеры напрямую. Он обращается к container runtime (containerd, CRI-O) через CRI (Container Runtime Interface). Runtime создаёт и запускает контейнеры, настраивает изоляцию через namespace и cgroups.
4. Мониторинг и пробы — После запуска kubelet регулярно выполняет: — livenessProbe — проверяет, живо ли приложение (если нет — перезапускает контейнер); — readinessProbe — определяет, готов ли под принимать трафик; — startupProbe — для приложений с долгим стартом.
5. Отчётность — Kubelet собирает состояние контейнеров (Running, Terminated, Waiting) и передаёт его в API-сервер. 🔵 Что важно знать? ➡️ Управляет только контейнерами — Kubelet не знает про Deployment, Service или Ingress — он работает исключительно с подами и их контейнерами. Высокоуровневые абстракции обрабатывает kube-controller-manager. ➡️ Автономность при сбоях control plane — Если API-сервер временно недоступен, kubelet продолжает запущенные поды и следит за их состоянием. Новые поды назначить он не сможет, но уже работающие не остановятся. ➡️ Статичные поды — Kubelet умеет запускать поды из манифестов в каталоге /etc/kubernetes/manifests. Так работают статичные поды (например, компоненты control plane в kubeadm). ➡️ Связь с API-сервером через механизм watch — Вместо постоянного опроса kubelet использует длинные соединения (watch), чтобы получать обновления мгновенно. Это снижает нагрузку на API-сервер и ускоряет реакцию на изменения. ➡️ Kubelet — это граница между Kubernetes и фактическим выполнением кода. Он принимает декларативные описания подов из API и превращает их в живые контейнеры, обеспечивая обратную связь о состоянии. Без него узел остаётся просто сервером, не интегрированным в кластер. #заметкиИнженера