За что отвечают kubelet и kube-proxy в Kubernetes?

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

Ответ

kubelet — это основной агент узла (Node Agent), который работает на каждом worker-узле. Его ключевые обязанности:

  • Управление жизненным циклом подов: получение спецификации PodSpec (обычно от API-сервера) и обеспечение работы описанных в ней контейнеров через Container Runtime Interface (CRI).
  • Отчетность: постоянная отправка статуса узла и состояния подов в control plane (kube-apiserver).
  • Выполнение probes (liveness, readiness, startup) для контейнеров.
  • Монтирование томов (Volumes) и секретов (Secrets) для подов.

kube-proxy — сетевой прокси, работающий на каждом узле, отвечает за сетевую коммуникацию с сервисами (Service):

  • Реализует абстракцию Service, поддерживая набор сетевых правил (через iptables, IPVS или nftables).
  • Обеспечивает балансировку TCP/UDP/SCTP-трафика между подами, входящими в сервис.
  • Отслеживает изменения в endpoints (наборе IP-адресов подов сервиса) и динамически обновляет правила.

Пример фрагмента конфигурации kubelet (/var/lib/kubelet/config.yaml):

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
clusterDNS:
  - 10.96.0.10
clusterDomain: cluster.local
cpuManagerPolicy: static