Из чего состоит Worker-нода в Kubernetes?

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

Ответ

Worker-нода (или просто нода) в Kubernetes — это машина (виртуальная или физическая), на которой запускаются рабочие нагрузки (поды). Её ключевые компоненты:

  1. Kubelet — основной агент ноды. Он получает спецификации Pod (PodSpecs) от API-сервера и обеспечивает, чтобы описанные в них контейнеры были запущены и работоспособны. Также отвечает за пробеги (liveness/readiness probes) и отчитывается о состоянии ноды.
  2. Kube-proxy — сетевой прокси, реализующий концепцию Kubernetes Service. Он поддерживает правила сетевой трансляции на ноде, обеспечивая балансировку нагрузки и доступ к сервисам по их DNS-имени и ClusterIP.
  3. Container Runtime — программное обеспечение, ответственное за запуск контейнеров (например, containerd, CRI-O). Раньше часто использовался Docker, который сам по себе не является runtime в терминах CRI (Container Runtime Interface).
  4. Операционная система — обычно это минималистичный Linux-дистрибутив, оптимизированный для контейнеров (например, Container-Optimized OS от Google, Flatcar, Ubuntu).
  5. Дополнительные компоненты (DaemonSets) — на нодах часто запускаются системные поды для:
    • Сетевых плагинов (CNI) — Calico, Flannel, Cilium.
    • Сбора логов — Fluentd, Filebeat.
    • Сбора метрик — Prometheus Node Exporter, Datadog agent.

Проверка состояния компонентов ноды:

# Посмотреть список всех нод и их статус
kubectl get nodes

# Получить детальную информацию о конкретной ноде
kubectl describe node <node-name>

# Проверить, какие поды (включая системные) запущены на ноде
kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=<node-name>