Descheduler#
Descheduler – инструмент, предназначенный для улучшения распределения pod в кластере Kubernetes. Анализирует текущее состояние размещения и при необходимости удаляет или заменяет («вытесняет») некоторые pod, чтобы Kube-scheduler мог переразместить их более оптимально.
Основные задачи и возможности
Оптимизация размещения pod:
Помогает освободить перегруженные или неэффективно используемые узлы, «вытесняя» менее критичные pod.
Поддержка различных стратегий:
Включает политики для:
удаления pod с перегруженных узлов;
балансировки между узлами по количеству pod;
освобождения узлов с низкой нагрузкой (для масштабирования);
удаления pod, нарушающих anti-affinity правила.
Работа в дополнение к Kube-scheduler:
Не заменяет стандартный планировщик, а дополняет его, со временем исправляя неоптимальное распределение.
Гибкая настройка через конфигурацию:
Позволяет включать/отключать стратегии, задавать фильтры по пространствам имен, меткам и другим параметрам.
Запуск по расписанию (через CronJob):
Обычно разворачивается, как периодическая задача, так как работает асинхронно.
Примечание
Descheduler является инструментом по умолчанию компонента Pod-management и устанавливается с ним автоматически в режиме CronJob.
Конфигурация values#
Параметры Descheduler можно переопределить через редактирование нужных значений в spec.values. Общее описание конфигурации values для инструментов приведено в разделе «Конфигурации инструментов дополнительных компонентов».
-
concurrencyPolicy – политика одновременного выполнения заданий
deschedulingInterval – интервал анализа размещения pod для Deployment
deschedulerPolicy.strategies.RemoveDuplicates – удаление дублирующихся pod
deschedulerPolicy.strategies.RemovePodsHavingTooManyRestarts – удаление pod с частыми перезапусками
deschedulerPolicy.strategies.RemovePodsViolatingNodeTaints – удаление pod, нарушающих taints узлов
deschedulerPolicy.strategies.RemovePodsViolatingNodeAffinity – удаление pod, нарушающих NodeAffinity
deschedulerPolicy.strategies.LowNodeUtilization – балансировка при низком уровне утилизации узлов
kind – тип развертывания descheduler#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Тип ресурса Kubernetes для развертывания Descheduler. Возможные значения: |
|
image – настройки образа контейнера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Репозиторий образа Descheduler с использованием шаблонных переменных для формирования полного пути |
|
|
Тег версии образа Descheduler |
|
|
Политика загрузки образа. Возможные значения: |
|
imagePullSecrets – секреты для загрузки образов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список секретов для аутентификации в приватных реестрах контейнеров. Пример: – |
|
resources – настройки аппаратных ресурсов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Запрашиваемое количество CPU для контейнера |
|
|
Запрашиваемый объем памяти для контейнера |
|
securityContext – контекст безопасности контейнера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Разрешить ли контейнеру повышать привилегии |
|
|
Список |
|
|
Запускать ли контейнер в привилегированном режиме |
|
|
Использовать ли файловую систему только для чтения |
|
|
Требовать запуск контейнера от имени непривилегированного пользователя |
|
|
ID пользователя, от имени которого запускается контейнер |
|
nameOverride – переопределение имени ресурса#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Частичное переопределение имени чарта для генерации имен ресурсов |
|
fullnameOverride – полное переопределение имени ресурса#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Полное переопределение сгенерированного имени ресурсов |
|
commonLabels – общие метки#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Метки, которые будут применены ко всем создаваемым ресурсам |
|
cronJobApiVersion – версия API CronJob#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Версия API Kubernetes для ресурса |
|
schedule – расписание запуска CronJob#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Расписание запуска Descheduler в формате |
|
suspend – приостановка CronJob#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Приостановка выполнения |
|
successfulJobsHistoryLimit – лимит истории успешных заданий#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество успешно завершенных заданий для хранения в истории |
|
failedJobsHistoryLimit – лимит истории неудачных заданий#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество неудачно завершенных заданий для хранения в истории |
|
concurrencyPolicy – политика одновременного выполнения заданий#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Политика одновременного выполнения заданий |
|
deschedulingInterval – интервал анализа размещения pod для Deployment#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Интервал между запусками Descheduler (требуется при |
|
replicas – количество реплик#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество реплик для |
|
leaderElection – настройки выбора лидера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Настройки механизма выбора лидера (требуется при |
|
command – команда запуска#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Команда для запуска Descheduler в контейнере |
|
cmdOptions – опции командной строки#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Уровень детализации логирования (verbosity level). Возможные значения: |
|
deschedulerPolicyAPIVersion – версия API политики#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Версия API-политики Descheduler. Рекомендуется использовать последнюю версию API, поддерживаемую версией Descheduler |
|
deschedulerPolicy.strategies.RemoveDuplicates – удаление дублирующихся pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить стратегию удаления дублирующихся pod одного узла для обеспечения высокой доступности |
|
deschedulerPolicy.strategies.RemovePodsHavingTooManyRestarts – удаление pod с частыми перезапусками#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить стратегию удаления pod, имеющих слишком много перезапусков |
|
|
Пороговое значение количества перезапусков pod, после которого он будет «вытеснен» |
|
|
Учет перезапусков init-контейнеров при подсчете |
|
deschedulerPolicy.strategies.RemovePodsViolatingNodeTaints – удаление pod, нарушающих taints узлов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить стратегию удаления pod, которые нарушают |
|
deschedulerPolicy.strategies.RemovePodsViolatingNodeAffinity – удаление pod, нарушающих NodeAffinity#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить стратегию удаления pod, нарушающих правила |
|
|
Типы |
|
deschedulerPolicy.strategies.RemovePodsViolatingInterPodAntiAffinity – удаление pod, нарушающих InterPod AntiAffinity#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить стратегию удаления pod, нарушающих правила |
|
deschedulerPolicy.strategies.RemovePodsViolatingTopologySpreadConstraint – удаление pod, нарушающих TopologySpreadConstraint#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить стратегию удаления pod, нарушающих ограничения топологического распределения |
|
|
Включать ли в проверку мягкие ограничения (soft constraints) |
|
deschedulerPolicy.strategies.LowNodeUtilization – балансировка при низком уровне утилизации узлов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить стратегию поиска недоиспользуемых узлов и «вытеснении» pod с других узлов для их перепланирования на недоиспользуемые узлы |
|
|
Пороговое значение использования CPU в процентах, ниже которого узел считается недоиспользуемым |
|
|
Пороговое значение использования памяти в процентах, ниже которого узел считается недоиспользуемым |
|
|
Пороговое значение количества pod в процентах, ниже которого узел считается недоиспользуемым |
|
|
Целевое пороговое значение CPU в процентах для узлов, с которых будут «вытесняеться» pod |
|
|
Целевое пороговое значение памяти в процентах для узлов, с которых будут «вытесняеться» pod |
|
|
Целевое пороговое значение количества pod в процентах для узлов, с которых будут «вытесняеться» pod |
|
priorityClassName – класс приоритета pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Класс приоритета для pod Descheduler, определяющий их важность при планировании |
|
nodeSelector – селектор узлов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Селектор узлов для планирования pod Descheduler на конкретные узлы |
|
affinity – правила affinity#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Настройки |
|
tolerations – настройки tolerations для taint#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список |
|
rbac – настройки RBAC#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создание ресурсов RBAC ( |
|
serviceAccount – настройки ServiceAccount#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать ли |
|
|
Имя |
|
|
Аннотации для |
|
podAnnotations – аннотации pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Аннотации, которые будут добавлены к pod Descheduler |
|
podLabels – метки pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Метки, которые будут добавлены к pod Descheduler |
|
livenessProbe – проверка работоспособности pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество неудачных проверок до перезапуска контейнера |
|
|
URL-путь для HTTP-проверки работоспособности pod |
|
|
Порт для HTTP-проверки работоспособности pod |
|
|
Схема протокола для проверки pod (HTTP или HTTPS) |
|
|
Задержка перед первой проверкой после запуска контейнера (в секундах) |
|
|
Периодичность выполнения проверки работоспособности (в секундах) |
|
service – настройки Service#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать ли |
|
serviceMonitor – настройки ServiceMonitor для Prometheus#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать ли |
|
|
Дополнительные метки для ресурса |
|
|
Интервал сбора метрик. Если не задан, используется глобальный интервал Prometheus |
|
|
Пропускать ли проверку TLS-сертификата при сборе метрик |
|
|
Имя сервера для проверки TLS-сертификата |
|
|
Правила переименования метрик после их сбора |
|
|
Правила переименования меток перед сбором метрик |
|