Gymterview
middle

Какова архитектура кластера Kubernetes?

Кластер Kubernetes состоит из Master Node (управляющий узел, Control Plane) и Worker Nodes (рабочие узлы).

Master Node (Control Plane)

Управляющий узел отвечает за состояние всего кластера и принятие решений:

  • API Server (kube-apiserver) — центральный компонент, точка входа для всех REST-запросов. Через него работает kubectl, другие компоненты кластера и внешние системы. Все операции (создание Pod, Service и т.д.) проходят через API Server
  • etcd — распределённое хранилище типа «ключ-значение». Хранит всё состояние кластера: информацию о нодах, подах, конфигурации, секретах. Это «источник истины» для кластера
  • Scheduler (kube-scheduler) — отвечает за назначение Pod’ов на Worker Node. При создании нового Pod’а Scheduler анализирует доступные ресурсы на нодах, affinity/anti-affinity правила, taints/tolerations и выбирает оптимальный узел
  • Controller Manager (kube-controller-manager) — запускает контроллеры, которые следят за состоянием кластера и приводят его к желаемому состоянию. Примеры контроллеров: ReplicaSet Controller, Deployment Controller, Node Controller, Job Controller

Worker Node

Рабочий узел, на котором выполняются контейнеры с приложениями:

  • kubelet — агент, работающий на каждой Worker Node. Получает от API Server описание Pod’ов, которые должны запускаться на данной ноде, и обеспечивает их запуск и работу
  • kube-proxy — сетевой прокси на каждой ноде. Обеспечивает сетевое взаимодействие между Pod’ами и Service’ами. Управляет правилами iptables/IPVS для маршрутизации трафика
  • Container Runtime — среда выполнения контейнеров. Kubernetes поддерживает несколько рантаймов через стандарт CRI (Container Runtime Interface): containerd, CRI-O. Docker как рантайм был исключён начиная с Kubernetes 1.24, но Docker-образы по-прежнему полностью совместимы

Схема взаимодействия

Пример
                   +-------------------+
                   |    Master Node    |
                   |  (Control Plane)  |
                   |                   |
  kubectl -------->|  API Server       |
                   |  Scheduler        |
                   |  Controller Mgr   |
                   |  etcd             |
                   +--------+----------+
                            |
              +-------------+-------------+
              |                           |
     +--------v--------+        +--------v--------+
     |  Worker Node 1  |        |  Worker Node 2  |
     |                  |        |                  |
     |  kubelet         |        |  kubelet         |
     |  kube-proxy      |        |  kube-proxy      |
     |  Container RT    |        |  Container RT    |
     |                  |        |                  |
     |  [Pod] [Pod]     |        |  [Pod] [Pod]     |
     +-----------------+        +-----------------+

На собеседовании: достаточно назвать 4 компонента Control Plane (API Server, etcd, Scheduler, Controller Manager) и 3 компонента Worker Node (kubelet, kube-proxy, Container Runtime). Частая ошибка — путать kubelet и kube-proxy или забыть про etcd.