Модуль создает в кластере набор классов приоритета (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 |