Skip to content

Kube cluster architecture

Kubernetes-кластер состоит из Control Plane (плоскости управления) и Worker Nodes (узлов-исполнителей). Эти компоненты работают вместе для управления развертыванием контейнеров, балансировки нагрузки, автоматического масштабирования и самовосстановления системы.

  • Control Plane управляет кластером.
  • Worker Nodes выполняют контейнеры.
  • API Server — основное звено взаимодействия.
  • etcd хранит состояние системы.
  • Scheduler и Controllers поддерживают работоспособность.
  • Kubelet запускает контейнеры на нодах.
  • Kube Proxy обеспечивает сетевое взаимодействие.

1. Control Plane (Плоскость управления)

Control Plane отвечает за управление кластером, распределение нагрузки и слежение за состоянием приложений. Он включает несколько ключевых компонентов:

1.1 API Server (kube-apiserver)

  • Сердце Kubernetes-кластера — принимает REST-запросы и управляет всей системой через API.
  • Взаимодействует с etcd для хранения конфигурации и состояния кластера.
  • Аутентифицирует и авторизует запросы.

1.2 Хранилище состояний (etcd)

  • Распределённая key-value база данных, в которой хранятся все объекты кластера (Pods, Deployments, Services и т.д.).
  • Должна быть отказоустойчивой и резервируемой.

1.3 Планировщик (kube-scheduler)

  • Отвечает за размещение новых подов на нодах, выбирая наиболее подходящий узел.
  • Учитывает:
  • Загрузку ресурсов (CPU, RAM)
  • Политики размещения (affinity, taints и tolerations)
  • Привилегии и приоритеты

1.4 Контроллеры (kube-controller-manager)

  • Запускает контроллеры, которые следят за состоянием кластера и приводят его в соответствие с заданной конфигурацией.
  • Основные контроллеры:
  • Node Controller – отслеживает доступность нод
  • Replication Controller – управляет количеством подов
  • Service Account & Token Controllers – создают сервисные аккаунты и API-токены

1.5 Контроллер входящего трафика (kube-proxy на Control Plane)

  • Управляет сетевыми правилами, позволяя подам взаимодействовать друг с другом
  • Использует iptables или IPVS для маршрутизации запросов

2. Worker Nodes (Рабочие узлы)

Worker Nodes — это физические или виртуальные машины, на которых запускаются контейнеры. Каждый узел содержит три ключевых компонента:

2.1 Kubelet

  • Агент, работающий на каждой ноде
  • Управляет подами на узле, взаимодействует с API Server
  • Гарантирует, что контейнеры работают по заданной конфигурации

2.2 Kube Proxy

  • Управляет сетевым трафиком между сервисами внутри кластера
  • Настраивает маршрутизацию и балансировку нагрузки

2.3 Контейнерный рантайм

  • Отвечает за запуск контейнеров
  • Поддерживает Docker, containerd, CRI-O и другие runtime

3. Дополнительные Компоненты

3.1 Поддержка сети

  • Kubernetes не включает сетевую реализацию, поэтому используются CNI-плагины:
  • Flannel – простая реализация overlay-сети
  • Calico – поддерживает сетевые политики
  • Cilium – использует eBPF для эффективного сетевого взаимодействия

3.2 Ingress Controller

  • Позволяет управлять внешним доступом к сервисам через HTTP/HTTPS
  • Реализуется через NGINX Ingress Controller, Traefik, HAProxy и т. д.

3.3 CSI (Container Storage Interface)

  • Управляет динамическими и статическими томами хранения (например, PersistentVolume)
  • Поддерживает Longhorn, Rook, OpenEBS, Ceph, AWS EBS, GCP PD

4. Взаимодействие компонентов

  1. Пользователь отправляет запрос в API Server (например, создать новый Pod)
  2. API Server валидирует запрос, записывает его в etcd и передает Scheduler
  3. Scheduler выбирает подходящий Worker Node для развертывания
  4. Kubelet на Worker Node получает команду, скачивает контейнеры через container runtime и запускает Pod
  5. Kube Proxy настраивает маршрутизацию трафика
  6. Контроллеры следят за состоянием объектов и исправляют отклонения

5. Графическое представление

+----------------------------------------------------+
|                 Control Plane                      |
| +----------------+  +-------------------------+  |
| | API Server     |--| etcd (State Storage)    |  |
| +----------------+  +-------------------------+  |
| +------------------------------------------------+
| | Scheduler      |  | Controller Manager       |
| +------------------------------------------------+
+----------------------------------------------------+

               ↕ API Calls

+----------------------------------------------------+
|                 Worker Node 1                      |
| +----------------+  +-------------------------+  |
| | Kubelet        |  | Kube Proxy              |  |
| +----------------+  +-------------------------+  |
| +------------------------------------------------+
| | Container Runtime (Docker/containerd)         |
| +------------------------------------------------+
| | Running Pods (Containers)                     |
| +------------------------------------------------+
+----------------------------------------------------+

               ↕ Network Traffic

+----------------------------------------------------+
|                 Worker Node 2                      |
| ... аналогичная структура ...                    |
+----------------------------------------------------+