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