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
affinity – правила привязки (affinity и anti-affinity) pod к узлам
kind – тип развертывания Descheduler#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Тип ресурса Kubernetes для развертывания Descheduler. |
|
image – параметры контейнерного образа#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Репозиторий образа Descheduler с использованием шаблонных переменных для формирования полного пути |
|
|
Тег образа контейнера |
|
|
Политика загрузки образа. |
|
imagePullSecrets – Secret для загрузки образов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список |
|
resources – запросы и ограничения ресурсов контейнера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Запрашиваемые ресурсы CPU для контейнера |
|
|
Запрашиваемые ресурсы памяти для контейнера |
|
securityContext – контекст безопасности контейнера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Активация разрешения на эскалацию привилегий в контейнере |
|
|
Список возможностей ( |
|
|
Запуск контейнеров в привилегированном режиме |
|
|
Монтирование корневой файловой системы в режиме «только для чтения» |
|
|
Запуск от имени пользователя без административных полномочий |
|
|
ID пользователя для запуска контейнера |
|
podSecurityContext – параметры контекста безопасности pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Параметры контекста безопасности pod. |
|
nameOverride – переопределение имени чарта#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Переопределение базового имени ресурсов чарта для генерации имен |
|
fullnameOverride – полное переопределение имени чарта#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Полное переопределение имени для всех создаваемых ресурсов чарта |
|
commonLabels – общие метки для всех ресурсов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Метки, которые будут применены ко всем создаваемым ресурсам |
|
cronJobApiVersion – версия API CronJob#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Версия API Kubernetes для ресурса |
|
schedule – расписание запуска CronJob#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Расписание запуска Descheduler в формате |
|
|
Приостановка выполнения |
|
|
Максимальное время в секундах для ожидания начала выполнения |
|
|
Количество успешно завершенных заданий для хранения в истории |
|
|
Количество неудачно завершенных заданий для хранения в истории |
|
|
Время в секундах до удаления завершенного |
|
|
Часовой пояс для расписания |
|
concurrencyPolicy – политика одновременного выполнения заданий#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Политика одновременного выполнения заданий |
|
deschedulingInterval – интервал анализа размещения pod для Deployment#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Интервал между запусками Descheduler (требуется при |
|
replicas – количество реплик#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество реплик pod |
|
leaderElection – настройки выбора лидера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Настройки механизма выбора лидера (требуется при |
|
command – команда запуска контейнера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Команда запуска контейнера, переопределяющая стандартный |
|
cmdOptions – опции командной строки#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Уровень детализации логирования. |
|
deschedulerPolicyAPIVersion – версия API политики#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Версия API-политики Descheduler; рекомендуется использовать последнюю версию API, поддерживаемую версией Descheduler |
|
deschedulerPolicy – политика descheduler#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Селектор узлов для планирования pod. |
|
|
Максимальное количество pod для вытеснения с одного узла |
|
|
Максимальное количество pod для вытеснения из одного пространства имен |
|
|
Игнорирование pod с |
|
|
Разрешение вытеснения pod с локальным хранилищем |
|
|
Конечная точка коллектора для трассировки |
|
|
Сертификат транспорта для трассировки |
|
|
Имя сервиса для трассировки |
|
|
Пространство имен сервиса для трассировки |
|
|
Частота выборки трассировки |
|
|
Использование нулевого провайдера при ошибке трассировки |
|
|
Включение стратегии удаления дублирующихся pod одного узла для обеспечения высокой доступности |
|
|
Включение стратегии удаления pod, имеющих слишком много перезапусков |
|
|
Пороговое значение количества перезапусков pod, после которого он будет вытеснен |
|
|
Учет перезапусков init-контейнеров при подсчете |
|
|
Включение стратегии удаления pod, которые нарушают |
|
|
Включение стратегии удаления pod, нарушающих правила |
|
|
Типы |
|
|
Включение стратегии удаления pod, нарушающих правила |
|
|
Включение стратегии удаления pod, нарушающих ограничения топологического распределения |
|
|
Включение в проверку мягких ограничений (soft constraints) |
|
|
Включение стратегии поиска недоиспользуемых узлов и вытеснения pod с других узлов для их перепланирования на недоиспользуемые узлы |
|
|
Пороговое значение использования CPU в процентах, ниже которого узел считается недоиспользуемым |
|
|
Пороговое значение использования памяти в процентах, ниже которого узел считается недоиспользуемым |
|
|
Пороговое значение количества pod в процентах, ниже которого узел считается недоиспользуемым |
|
|
Целевое пороговое значение CPU в процентах для узлов, с которых будут вытесняться pod |
|
|
Целевое пороговое значение памяти в процентах для узлов, с которых будут вытесняться pod |
|
|
Целевое пороговое значение количества pod в процентах для узлов, с которых будут вытесняться pod |
|
priorityClassName – имя класса приоритета pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя |
|
nodeSelector – селектор узлов для планирования pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Селектор узлов для планирования pod. |
|
affinity – правила привязки (affinity и anti-affinity) pod к узлам#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Настройки правила привязки ( |
|
tolerations – параметры Toleration для pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
|
|
rbac – настройки RBAC (управление доступом на основе ролей)#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Активация автоматического создания ресурсов RBAC |
|
serviceAccount – настройки сервисного аккаунта#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создание |
|
|
Имя |
|
|
Аннотации, добавляемые ко всем создаваемым ресурсам |
|
podAnnotations – аннотации pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Аннотации, которые будут добавлены к pod Descheduler |
|
podLabels – метки pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Метки, которые будут добавлены к pod Descheduler |
|
dnsConfig – пользовательская конфигурация DNS для pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Пользовательская конфигурация DNS для pod |
|
livenessProbe – параметры проверки работоспособности#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество неудачных попыток до перевода контейнера в статус |
|
|
HTTP-путь для проверки работоспособности контейнера |
|
|
Имя порта для проверки работоспособности |
|
|
Схема обращения для проверки работоспособности. |
|
|
Задержка в секундах перед первой проверкой работоспособности |
|
|
Интервал в секундах между проверками работоспособности |
|
service – настройки Service#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Активация создания |
|
|
Политика выбора IP-стека для service. |
|
|
Список IP-семейств, поддерживаемых |
|
serviceMonitor – параметры ServiceMonitor#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Активация создания |
|
|
Дополнительные метки для ресурса |
|
|
Интервал сбора метрик |
|
|
Пропуск проверки TLS-сертификата при сборе метрик |
|
|
Имя сервера для проверки TLS-сертификата |
|
|
Правила фильтрации и преобразования меток, применяемые к собранным метрикам. |
|
|
Правила фильтрации и преобразования меток, применяемые к целям сбора до начала сбора метрик. |
|