Из чего состоит узел (Node) в Kubernetes?

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

Ответ

Узел (Node) — это рабочая машина (виртуальная или физическая) в кластере Kubernetes, на которой запускаются поды (Pods). Каждый узел состоит из нескольких обязательных компонентов, управляемых Control Plane.

Основные компоненты узла:

  1. Kubelet: Главный агент узла. Он отвечает за:

    • Получение спецификации Pod (манифеста) от API-сервера.
    • Управление жизненным циклом контейнеров в Pod (запуск, остановка) через Container Runtime.
    • Отправку отчетов о состоянии узла и подов обратно в Control Plane.
  2. Container Runtime: Программное обеспечение, которое выполняет контейнеры (например, containerd, CRI-O). Kubelet взаимодействует с ним через интерфейс CRI (Container Runtime Interface).

  3. Kube-proxy: Сетевой прокси, работающий на каждом узле. Он отвечает за:

    • Реализацию концепции Service (сервиса).
    • Маршрутизацию сетевого трафика к подам на основе правил IPTables или IPVS.
    • Балансировку нагрузки между подами одного сервиса.

Дополнительно на узле могут быть:

  • Аддоны (Addons): Например, сетевой плагин CNI (Calico, Flannel), агенты мониторинга (Prometheus Node Exporter) или логирования (Fluentd).
  • Системные демоны: sshd, cron, systemd.

Проверка состояния узла:

kubectl describe node <node-name>

В выводе вы увидите информацию о версиях компонентов, ресурсах (CPU, Memory), условиях (Conditions) и списке запущенных подов.