Ответ
Worker-нода (или просто нода) в Kubernetes — это машина (виртуальная или физическая), на которой запускаются рабочие нагрузки (поды). Её ключевые компоненты:
- Kubelet — основной агент ноды. Он получает спецификации Pod (PodSpecs) от API-сервера и обеспечивает, чтобы описанные в них контейнеры были запущены и работоспособны. Также отвечает за пробеги (liveness/readiness probes) и отчитывается о состоянии ноды.
- Kube-proxy — сетевой прокси, реализующий концепцию Kubernetes Service. Он поддерживает правила сетевой трансляции на ноде, обеспечивая балансировку нагрузки и доступ к сервисам по их DNS-имени и ClusterIP.
- Container Runtime — программное обеспечение, ответственное за запуск контейнеров (например, containerd, CRI-O). Раньше часто использовался Docker, который сам по себе не является runtime в терминах CRI (Container Runtime Interface).
- Операционная система — обычно это минималистичный Linux-дистрибутив, оптимизированный для контейнеров (например, Container-Optimized OS от Google, Flatcar, Ubuntu).
- Дополнительные компоненты (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>