---
status: processing
type: concept
tags:
  - devops
  - kubernetes
created: 2025-12-17
updated: 2026-05-07
title: Control Plane - Плоскость управления
---

# Control Plane - Плоскость управления

В k8s плоскостью управления выступают master-узлы, они контролируют работу worker-узлов и следят за здоровьем системы, в целом.

К основным компонентам Control plane относятся:
1) Etcd
2) Kube-api-server
3) Kube-scheduler
4) Kube-controller-manager
5) Cloud-controller-manager

![[Pasted image 20260429090040.png|400]]

## Etcd

**Etcd** — Opensource *key-value* хранилище, использующее алгоритм консенсуса [[Алгоритм консенсуса raft|raft]] для обеспечения надежного способа хранения данных.

- Рекомендуемое Kubernetes хранилище конфигурации кластера.
- Единственный *Stateful*-компонент кластера Kubernetes.
- Инсталлируется на каждую Master node.
- Для выбора лидера используется алгоритм Raft.

## Kube-api-server

**Kube-api-server** — основной компонент для взаимодействия с кластером и обязательный посредник между всеми компонентами Kubernetes в Data и Control plane.

- Использует REST API интерфейс.
- Является точкой входа в кластер.
- Обязательный участник любого взаимодействия между компонентами кластера.
- Обеспечивает разграничение прав доступа к содержимому кластера (авторизация и аутентификация).
- *Stateless*-компонент.
- Инсталлируется на *каждую* Master node.
- Выбор лидера происходит по алгоритму [[Алгоритм выбора лидера Lease|lease]].

## Kube-controller-manager
**Kube-controller-manager** — компонент, ответственный за работу множества kube-controllers.

- Является *связующим* звеном при взаимодействии Kube-controllers и отвечает за их работу.
- Отвечает за *сборку мусора* (Garbage collecting) в кластере Kubernetes.
- *Stateless*-компонент.
- Инсталлируется на каждую Master node.
- Выбор лидера происходит по алгоритму [[Алгоритм выбора лидера Lease|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|lease]].

Kube-scheduler принимает к сведению имеющиеся у развертываний указания по минимальным и максимальным требованиям к вычислительным ресурсам (*Requests* и *Limits*).

**Requests:** Минимальный объем вычислительной мощности (Cpu, Ram), необходимый для функционирования рабочей нагрузки.

**Limits:** Максимальный объем вычислительных ресурсов, выделяемый рабочей нагрузке.

![[Pasted image 20260429090719.png|200]]

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|400]]

**Политика вытеснения:**

В критических ситуациях Kube-scheduler может прибегнуть к процедуре вынужденного *выселения* (*переселения*) рабочих нагрузок с низким приоритетом (Priority class) в пользу рабочих нагрузок с *высоким* приоритетом, руководствуясь "*политикой вытеснения*" (Preemption policy).

Данное поведение характерно для ситуаций, при которых узел с рабочей нагрузкой высокого приоритета выходит из строя — в таком случае, во избежание Downtime *высокоприоритетного* развертывания, оно будет отправлено на узел, имеющий низко приоритетную нагрузку (и она будет выселена принудительно).

![[Pasted image 20260429090930.png]]