Приоритеты подов (Priority Classes)

Доступные классы приоритета

DKP создаёт в кластере набор классов приоритета (PriorityClass) и назначает их компонентам, установленным Deckhouse, а также приложениям в кластере. Планировщик (scheduler) учитывает приоритет пода при распределении нагрузки: если ресурсов недостаточно, поды с более низким приоритетом будут вытесняться первыми.

Например, если поды имеют priorityClassName: production-low и в кластере не хватает для них ресурсов, планировщик сначала удалит (вытеснит) все поды с 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