Ответ
Кластер Kubernetes архитектурно разделен на управляющую плоскость (Control Plane) и плоскость данных (Data Plane), которые выполняются на Master и Worker нодах соответственно.
Master Node (Управляющая нода) — это "мозг" кластера. На ней работают компоненты, управляющие состоянием всего кластера:
- kube-apiserver: Фронтенд Control Plane, единственный компонент, с которым взаимодействуют все (пользователи, CLI, другие компоненты).
- etcd: Высокодоступное key-value хранилище, в котором хранится вся конфигурация и состояние кластера.
- kube-scheduler: Отвечает за планирование — решает, на какой Worker Node запустить новый Pod.
- kube-controller-manager: Запускает контроллеры, которые следят за состоянием кластера (например, контроллер реплик поддерживает нужное количество копий Pod'ов).
Worker Node (Рабочая нода) — это "мускулы" кластера. На них выполняются рабочие нагрузки (приложения):
- kubelet: Агент на ноде, который получает инструкции от API-сервера и управляет жизненным циклом Pod'ов и контейнеров.
- kube-proxy: Сетевой прокси, который поддерживает правила сетевой маршрутизации и балансировки нагрузки для сервисов (Service).
- Container Runtime: Программное обеспечение для запуска контейнеров (например, containerd или CRI-O).
Ключевые отличия:
- Роль: Master управляет, Worker — выполняет.
- Ресурсы: Master ноды требуют меньше CPU/RAM, но критически важны для доступности. Worker ноды потребляют основную часть ресурсов кластера.
- Запуск Pod'ов: По умолчанию пользовательские Pod'ы не планируются на Master ноды. Это обеспечивается taint (загрязнением):
# На Master ноде по умолчанию установлен taint kubectl describe node master-node | grep Taints # Taints: node-role.kubernetes.io/master:NoScheduleЭто гарантирует, что системные Pod'ы Control Plane (например,
kube-proxy) могут работать на Master, а пользовательские — нет, если явно не указанаtoleration.