Модуль распределения нагрузки узлов (Descheduler)

Descheduler - это инструмент, который помогает оптимизировать размещение подов в кластере.

Descheduler анализирует текущее состояние кластера и определяет поды, которые стоит переместить на другие узлы для достижения лучшей производительности, утилизации ресурсов или соответствия определенным правилам.

Для настройки Descheduler в интерфейсе клиентского кластера платформы “Штурвал”:

  • в боковом меню откройте раздел Сервисы и репозитории;
  • перейдите на страницу Установленные сервисы;
  • найдите Модуль распределения нагрузки узлов.

Если модуль не отображается, перейдите в раздел Сервисы и репозитории и откройте страницу Доступные чарты, найдите чарт “shturval-descheduler” и нажмите “Установить”.

Перечень конфигурируемых параметров для сервиса
Наименование параметраОписание параметраЗначение параметра
resources.requests.cpuЗапрашиваемые ресурсы CPU500m
resources.requests.memoryЗапрашиваемые ресурсы памяти256Mi
resources.limits.cpuОграничения CPU100m
resources.limits.memoryОграничения памяти128Mi
deschedulingIntervalИнтервал времени между запусками descheduler5m
Параметры deschedulerPolicy.strategies
Наименование параметраОписание параметраЗначение параметра
RemoveDuplicates.enabledВключение стратегии удаления дубликатов подовtrue
RemovePodsHavingTooManyRestarts.enabledВключение стратегии удаления подов с частыми перезапускамиtrue
RemovePodsHavingTooManyRestarts.params.podsHavingTooManyRestarts.podRestartThresholdПорог перезапусков пода, при котором под будет удален100
RemovePodsHavingTooManyRestarts.params.podsHavingTooManyRestarts.includingInitContainersУчитывать init контейнеры при подсчете перезапусковtrue
RemovePodsViolatingNodeTaints.enabledВключение стратегии удаления подов, нарушающих запреты узловtrue
RemovePodsViolatingNodeAffinity.enabledВключение стратегии удаления подов, нарушающих аффинити узловtrue
RemovePodsViolatingNodeAffinity.params.nodeAffinityTypeТип аффинити узловrequiredDuringSchedulingIgnoredDuringExecution
RemovePodsViolatingInterPodAntiAffinity.enabledВключение стратегии удаления подов, которые нарушают анти-аффинити между подамиtrue
RemovePodsViolatingTopologySpreadConstraint.enabledВключение стратегии удаления подов, нарушающих ограничения распределения топологииtrue
RemovePodsViolatingTopologySpreadConstraint.parapms.includeSoftConstraintsУчитывать мягкие ограничения во время принятия решений об удаленииfalse
LowNodeUtilization.enabledВключение стратегии низкой утилизации узловtrue
LowNodeUtilization.params.nodeResourceUtilizationThresholds.thresholds.cpuПорог использования ресурсов CPU20
LowNodeUtilization.params.nodeResourceUtilizationThresholds.thresholds.memoryПорог использования ресурсов памяти20
LowNodeUtilization.params.nodeResourceUtilizationThresholds.thresholds.podsПорог использования ресурсов подов20
LowNodeUtilization.params.nodeResourceUtilizationThresholds.targetThresholds.cpuЦелевой порог использования ресурсов CPU50
LowNodeUtilization.params.nodeResourceUtilizationThresholds.targetThresholds.memoryЦелевой порог использования ресурсов памяти50
LowNodeUtilization.params.nodeResourceUtilizationThresholds.targetThresholds.podsЦелевой порог использования ресурсов подов50

С дополнительной информацией можно ознакомиться на Kubernetes Scheduler и github.