Модуль создает в кластере набор классов приоритета (PriorityClass) и назначает их компонентам, установленным Deckhouse, и приложениям в кластере.

Функциональность классов приоритета реализуется планировщиком (scheduler), который позволяет учитывать приоритет пода (определяемый его принадлежностью к классу) при планировании.

Например, при развертывании в кластере подов с priorityClassName: production-low, если в кластере не будет доступных ресурсов для данного пода, Kubernetes начнет вытеснять поды с наименьшим приоритетом. То есть сначала будут вытеснены все поды с priorityClassName: develop, затем — с cluster-low и так далее.

При указании класса приоритета очень важно понимать тип приложения и окружение, в котором оно будет работать. Указание любого класса приоритета не уменьшит его фактический приоритет, так как если у пода не установлен приоритет, то планировщик считает его самым низким.

Нельзя использовать классы приоритета system-node-critical, system-cluster-critical, cluster-medium, cluster-low.

Устанавливаемые модулем классы приоритета (в порядке приоритета от высшего к низшему):

Класс приоритета Описание Значение
system-node-critical Компоненты кластера, которые обязаны присутствовать на узле. Также полностью защищает от вытеснения kubelet’ом.
Примеры: node-exporter, csi и другие.
2000001000
system-cluster-critical Компоненты кластера, без которых его корректная работа невозможна. Этим PriorityClass’ом обязательно помечаются MutatingWebhooks и Extension API servers. Также полностью защищает от вытеснения kubelet’ом.
Примеры: kube-dns, kube-proxy, cni-flannel, cni-cillium и другие.
2000000000
production-high Stateful-приложения, отсутствие которых в production-окружении приводит к полной недоступности сервиса или потере данных.
Примеры: PostgreSQL, Memcached, Redis, MongoDB и другие.
9000
cluster-medium Компоненты кластера, влияющие на мониторинг (алерты, диагностика) и автомасштабирование. Без мониторинга невозможно оценить масштабы происшествия, без автомасштабирования — предоставить приложениям необходимые ресурсы.
Примеры: deckhouse, node-local-dns, grafana, upmeter и другие.
7000
production-medium Основные stateless-приложения в production-окружении, которые отвечают за работу сервиса для посетителей. 6000
deployment-machinery Компоненты кластера, используемые для сборки и деплоя в кластер. 5000
production-low Приложения в production-окружении (cron-задания, административные панели, batch-процессы), без которых можно обойтись некоторое время. Если batch или cron-задачи нельзя прерывать, их следует отнести к production-medium. 4000
staging Staging-окружения для приложений. 3000
cluster-low Компоненты кластера, без которых эксплуатация возможна, но которые желательны.
Примеры: dashboard, cert-manager, prometheus и другие.
2000
develop (по умолчанию) Develop-окружения для приложений. Класс по умолчанию, если не указан иной класс. 1000
standby Класс не предназначен для приложений. Используется в системных целях для резервирования узлов. -1