Конфигурация и распределение нагрузки узлов
Модуль распределения нагрузки узлов (Descheduler)
Descheduler ‒ это инструмент, который помогает оптимизировать размещение подов в кластере.
Descheduler анализирует текущее состояние кластера и определяет поды, которые стоит переместить на другие узлы для достижения лучшей производительности, утилизации ресурсов или соответствия определенным правилам.
Для настройки Descheduler в интерфейсе клиентского кластера Комплекса нужно:
- в боковом меню открыть раздел "Сервисы и репозитории";
- перейти на страницу "Установленные сервисы";
- найти "Модуль распределения нагрузки узлов". Если модуль не отображается, нужно перейти в раздел "Сервисы и репозитории"****, открыть страницу "Доступные чарты", найти чарт "shturval-descheduler" и нажать Установить. Перечень конфигурируемых параметров для сервиса перечислен в таблице 76. Таблица 76 ‒ Конфигурируемые параметры для сервиса
Параметры deschedulerPolicy.strategies приведены в таблице 77.
Таблица 77 ‒ Параметры deschedulerPolicy.strategies
С дополнительной информацией можно ознакомиться на Kubernetes Scheduler и github.
Container Runtime
ContainerD предоставляет исполняемую среду для запуска контейнеров (Container Runtime). Он упрощает развертывание контейнерных приложений и управление ими. При инициализации кластера управления и клиентских кластеров ContainerD устанавливается на каждом узле.
ContainerD ‒ демон на узле, который управляет всем жизненным циклом контейнера:
- скачивает образы из репозиториев для управления ими;
- вызывает Container Runtime для запуска, остановки процессов контейнера. Конфигурационный файл ContainerD расположен по пути /etc/containerd/config.toml. В графическом интерфейсе Комплекса с помощью объекта конфигурации узлов (NCI) возможна конфигурация параметров Container Runtime (п. 5.2.9.4.2.2).
Модуль управления конфигурациями узлов (Shturval Node Config)
Модуль управления конфигурациями узлов (Shturval Node Config) является продуктом внутренней разработки РОСА Кубис.
Shturval Node Config обеспечивает:
- централизованное управление конфигурационными параметрами узлов кластера;
- автоматическое применение конфигураций на узлах кластера;
- защиту работоспособности кластера. Модуль является критически важным для работы Комплекса (недоступен для отключения). По умолчанию модуль устанавливается в клиентские кластеры и кластер управления во включенном состоянии.
Для просмотра состояния сервиса нужно перейти на страницу раздела "Сервисы и репозитории", найти Модуль управления конфигурациями узлов (shturval-node-config) и нажать Управлять (рисунок 10).

Рисунок 523 ‒ Модуль управления конфигурациями узлов
Для корректной работы модуля должен быть включен Компонент модуля управления конфигурациями узлов (shturval-node-config-crds).
Контроллер Shturval Node Config оперирует кастомными ресурсами (Custom Resource):
- NodeConfigItems (NCI);
- Node Config.
NCI
Для применения конфигурации узлов контроллер использует кастомные ресурсы NodeConfigItems (NCI). NCI могут быть переиспользованы в разных кластерах. Механизм лейблов позволяет выбирать узлы, для которых требуется применение NCI.
Пример NCI:
apiVersion: node.shturval.tech/v1beta2
kind: NodeConfigItem
metadata:
annotations:
updatedDate: 2025-02-26T10:18:40Z
username: kubernetes-admin
creationTimestamp: 2025-02-26T10:18:40Z
finalizers:
‒ node.shturval.tech/finalizer
generation: 13
name: generic-init-config
resourceVersion: "1993844"
uid: c64d9844-6928-4742-822a-c75141dcf556
spec:
certificates:
‒ exist: true
name: shturval.crt
url: repo.su:443
files:
‒ group: root
mode: "0700"
owner: root
path: /etc/kubernetes
type: directory
nodeconfigselector:
kubernetes.io/os: linux
packages:
‒ adhoccmd:
postinstallmustsucceed: false
preinstallmustsucceed: false
name: shturvald
setlock: false
state: present
version: 2.11.0
runtimecfg:
cgroupdriver: systemd
pauseimage: r.shturval.tech/pause:3.10
registries:
‒ capabilities:
‒ resolve
‒ pull
host: https://repo.su:443
name: r.shturval.tech
sysctl:
file: /etc/sysctl.d/90-shturval.conf
param:
fs.inotify.max_user_instances: "8192"
kernel.panic: "10"
kernel.panic_on_oops: "1"
net.bridge.bridge-nf-call-iptables: "1"
net.ipv4.ip_forward: "1"
vm.max_map_count: "262144"
vm.overcommit_memory: "1"
systemdunits:
‒ active: true
enabled: true
name: containerd
‒ active: true
enabled: true
name: kubelet
status:
ready: true
selectednodeconfigs: # Выбранные узлы для применения конфигурации
‒ redos5t6q
‒ redos9aex
updatednodeconfigs: # Список узлов, к которым применена конфигурация
‒ redos5t6q
‒ redos9aex
Shturval Node Config может применять конфигурации узлов как при инициализации кластера, так и в уже рабочем кластере. При развертывании кластера NCI применяются для:
- создания Linux-пользователей для системных компонентов на Control Plane-узлах;
- настройки KubeAPI-сервера на Control Planeузлах;
- настройки параметров Container Runtime, параметры Sysctl, Systemd-юниты, период ротации кубовых сертификатов, доверенные сертификаты;
- установки пакетов для shturvald (containerd) на всех узлах. В некоторых случаях для применения изменений конфигурации узла или при обновлении кластера может потребоваться перезапуск узла. В таких случаях Shturval Node Config обеспечивает автоматический перезапуск с предварительным распределением подов по другим узлам. Чтобы контролировать перезапуск узла в ручном режиме, следует воспользоваться инструкцией "Как защитить узлы от автоматического перезапуска".
Node Config
Контроллер Shturval Node Config использует кастомные ресурсы (Custom Resource) Node Config (NC), в которых на основе селекторов агрегирует применяемые NCI к одному узлу.
Пример Node Config:
apiVersion: node.shturval.tech/v1beta2
kind: NodeConfig
metadata:
annotations:
node.shturval.tech/initchecksum: 4b0ef0
node.shturval.tech/ssh: accessed
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/os: linux
hostname: redos5t6q
infra: vsphere
kubernetes.io/arch: amd64
kubernetes.io/hostname: redos5t6q
kubernetes.io/os: linux
node-role.kubernetes.io/workers: ''
node.shturval.tech/applygroup: workers
name: redos5t6q
ownerReferences:
‒ apiVersion: v1
blockOwnerDeletion: true
controller: true
kind: Node
name: redos5t6q
uid: 257f60b0-9b5d-4b8a-b124-e0bd443cfd6f
‒ apiVersion: node.shturval.tech/v1beta2
kind: NodeConfigItem
name: generic-init-config
uid: c64d9844-6928-4742-822a-c75141dcf556
status:
ncistate:
‒ name: generic-init-config
state: applied
ready: true
spec:
applygroup: workers
nodeconfigitems: # Список NCI для конфигурации узла
‒ generic-init-config