Приоритеты подов (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 |