8.7 KiB
status, type, tags, created, updated, aliases
| status | type | tags | created | updated | aliases | |||
|---|---|---|---|---|---|---|---|---|
| processing | concept |
|
2025-12-17 | 2026-05-07 |
|
Control Plane - Плоскость управления
В k8s плоскостью управления выступают master-узлы, они контролируют работу worker-узлов и следят за здоровьем системы, в целом.
К основным компонентам Control plane относятся:
- Etcd
- Kube-api-server
- Kube-scheduler
- Kube-controller-manager
- Cloud-controller-manager
!Pasted image 20260429090040.png
Etcd
Etcd — Opensource key-value хранилище, использующее алгоритм консенсуса Алгоритм консенсуса raft для обеспечения надежного способа хранения данных.
- Рекомендуемое Kubernetes хранилище конфигурации кластера.
- Единственный Stateful-компонент кластера Kubernetes.
- Инсталлируется на каждую Master node.
- Для выбора лидера используется алгоритм Raft.
Kube-api-server
Kube-api-server — основной компонент для взаимодействия с кластером и обязательный посредник между всеми компонентами Kubernetes в Data и Control plane.
- Использует REST API интерфейс.
- Является точкой входа в кластер.
- Обязательный участник любого взаимодействия между компонентами кластера.
- Обеспечивает разграничение прав доступа к содержимому кластера (авторизация и аутентификация).
- Stateless-компонент.
- Инсталлируется на каждую Master node.
- Выбор лидера происходит по алгоритму Алгоритм выбора лидера Lease.
Kube-controller-manager
Kube-controller-manager — компонент, ответственный за работу множества kube-controllers.
- Является связующим звеном при взаимодействии Kube-controllers и отвечает за их работу.
- Отвечает за сборку мусора (Garbage collecting) в кластере Kubernetes.
- Stateless-компонент.
- Инсталлируется на каждую Master node.
- Выбор лидера происходит по алгоритму Алгоритм выбора лидера Lease.
Распространенные kube-controllers
- Node-controller (поддерживает связь с узлами кластера Kubernetes, инициирует перенаправление рабочих нагрузок с вышедших из строя узлов.
- Replicaset-controller (инициирует процедуру создания и функционирования сущности Replicaset).
- Endpoint-controller (выполняет создание endpoint - связи между Pod и его Service).
- Token-controller (обеспечивает создание и работу токенов для доступа к API кластера Kubernetes).
- Account-controller (обеспечивает функциональность учетных записей в Kubernetes).
Garbage collecting
Обязанности за сборку мусора (Garbage collecting) в кластере Kubernetes также возложены на компонент Kube-controller-manager.
Примером сборки мусора может выступать отслеживание и удаление старых версий наборов репликаций развертываний (Replicaset).
Если в кластере превышен лимит старых ревизий Replicaset — наиболее старая ревизия становится мусором и ее нужно удалить.
Cloud-controller-manadger
Cloud-controller-manager — компонент, ответственный за работу множества Cloud-controllers.
Не реализован в Kubernetes по умолчанию. Самостоятельная реализация привлекательна для вендоров, желающих предоставлять Kubernetes как облачную услугу.
- Является связующим звеном при взаимодействии Cloud-controllers и отвечает за их работу.
- Cloud-controller-manager, как и сами Cloud-controllers не реализованы по умолчанию.
Kube-scheduler
Kube-scheduler — компонент, ответственный за выбор подходящих узлов Data plane для запуска рабочих нагрузок.
При принятии решения руководствуется следующими факторами: Requests/Limits, QoS, Affinity/Anti-affinity rules, Priority class/Preemption policy
- Отвечает за распределение рабочих нагрузок на узлы Data plane с учетом определенных факторов.
- Stateless-компонент.
- Инсталлируется на каждую Master node.
- Выбор лидера происходит по алгоритму Алгоритм выбора лидера Lease.
Kube-scheduler принимает к сведению имеющиеся у развертываний указания по минимальным и максимальным требованиям к вычислительным ресурсам (Requests и Limits).
Requests: Минимальный объем вычислительной мощности (Cpu, Ram), необходимый для функционирования рабочей нагрузки.
Limits: Максимальный объем вычислительных ресурсов, выделяемый рабочей нагрузке.
!Pasted image 20260429090719.png
Kube-scheduler руководствуется присвоенным рабочей нагрузке значением QoS (Quality of Service).
В зависимости от указанных в развертывании Requests и Limits, уровень обслуживания (QoS) может принимать следующие значения:
- BestEffort (Requests и Limits не указаны вовсе).
- Burstable (хотя бы для одного контейнера в Pod указаны requests по Cpu или Ram).
- Guaranteed (все контейнеры в Pod имеют одинаковые Requests и Limits).
Affinity/Anti-affinity rules:
Kube-scheduler также руководствуется применяемыми к рабочей нагрузке Affinity/Anti-affinity rules.
Правила Affinity и Anti-affinity описываются в спецификации развертывания и позволяют влиять на решение Kube-scheduler о направлении рабочих нагрузок на узлы кластера за счет расширения типов возможных ограничений.
!Pasted image 20260429090816.png
Политика вытеснения:
В критических ситуациях Kube-scheduler может прибегнуть к процедуре вынужденного выселения (переселения) рабочих нагрузок с низким приоритетом (Priority class) в пользу рабочих нагрузок с высоким приоритетом, руководствуясь "политикой вытеснения" (Preemption policy).
Данное поведение характерно для ситуаций, при которых узел с рабочей нагрузкой высокого приоритета выходит из строя — в таком случае, во избежание Downtime высокоприоритетного развертывания, оно будет отправлено на узел, имеющий низко приоритетную нагрузку (и она будет выселена принудительно).
!