Модуль распределения нагрузки узлов (Descheduler)
Descheduler - это инструмент, который помогает оптимизировать размещение подов в кластере.
Descheduler анализирует текущее состояние кластера и определяет поды, которые стоит переместить на другие узлы для достижения лучшей производительности, утилизации ресурсов или соответствия определенным правилам.
Для установки и настройки Descheduler в интерфейсе платформы “Штурвал” перейдите в раздел Платформа/Установленные системные сервисы.
Для установки и настройки Descheduler в интерфейсе клиентского кластера платформы “Штурвал” перейдите в раздел Кластер/Название кластера/Установленные системные сервисы.
Найдите Модуль распределения нагрузки узлов. Если модуль не отображается, перейдите в доступные системные сервисы, найдите чарт “shturval-descheduler” и нажмите “Установить”.
Перечень конфигурируемых параметров для сервиса:
Наименование параметра | Описание параметра | Значение параметра |
---|---|---|
resources.requests.cpu | Запрашиваемые ресурсы CPU | 500m |
resources.requests.memory | Запрашиваемые ресурсы памяти | 256Mi |
resources.limits.cpu | Ограничения CPU | 100m |
resources.limits.memory | Ограничения памяти | 128Mi |
deschedulingInterval | Интервал времени между запусками descheduler | 5m |
Параметры 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 | Порог использования ресурсов CPU | 20 |
LowNodeUtilization.params.nodeResourceUtilizationThresholds.thresholds.memory | Порог использования ресурсов памяти | 20 |
LowNodeUtilization.params.nodeResourceUtilizationThresholds.thresholds.pods | Порог использования ресурсов подов | 20 |
LowNodeUtilization.params.nodeResourceUtilizationThresholds.targetThresholds.cpu | Целевой порог использования ресурсов CPU | 50 |
LowNodeUtilization.params.nodeResourceUtilizationThresholds.targetThresholds.memory | Целевой порог использования ресурсов памяти | 50 |
LowNodeUtilization.params.nodeResourceUtilizationThresholds.targetThresholds.pods | Целевой порог использования ресурсов подов | 50 |
С дополнительной информацией можно ознакомиться на Kubernetes Scheduler и github. В текущем релизе используется Scheduler версии 0.26.0