Descheduler
Scope: Cluster
Описание одного экземпляра descheduler
- apiVersion
- kind
- metadata
- metadata.name
- spec
Обязательный параметр
Описывает поведение экземпляра descheduler.
- spec.namespaceLabelSelector
Ограничение обработки подов с помощью меток пространства имен.
- spec.namespaceLabelSelector.matchExpressions
Список выражений меток, которые должен иметь узел, чтобы удовлетворить условию фильтра.
Пример:
matchExpressions: - key: tier operator: In values: - production - staging - key: tier operator: NotIn values: - production
- spec.namespaceLabelSelector.matchExpressions.key
Имя метки.
- spec.namespaceLabelSelector.matchExpressions.operator
Оператор сравнения.
Допустимые значения:
In
,NotIn
,Exists
,DoesNotExist
- spec.namespaceLabelSelector.matchExpressions.values
Значение метки.
- Элемент массива
Шаблон:
[a-z0-9]([-a-z0-9]*[a-z0-9])?
Длина:
1..63
- spec.namespaceLabelSelector.matchLabels
- spec.nodeLabelSelector
Ограничение обрабатываемых подов для соответствия вытесненным подам по меткам в представлении множества (set representation). Если значение установлено, не используйте
nodeSelector
.- spec.nodeLabelSelector.matchExpressions
Список выражений меток, которые должен иметь узел, чтобы удовлетворить условию фильтра.
Пример:
matchExpressions: - key: tier operator: In values: - production - staging - key: tier operator: NotIn values: - production
- spec.nodeLabelSelector.matchExpressions.key
Имя метки.
- spec.nodeLabelSelector.matchExpressions.operator
Оператор сравнения.
Допустимые значения:
In
,NotIn
,Exists
,DoesNotExist
- spec.nodeLabelSelector.matchExpressions.values
Значение метки.
- Элемент массива
Шаблон:
[a-z0-9]([-a-z0-9]*[a-z0-9])?
Длина:
1..63
- spec.nodeLabelSelector.matchLabels
- spec.podLabelSelector
Ограничение обработки подов по меткам.
- spec.podLabelSelector.matchExpressions
Список выражений меток, которые должен иметь узел, чтобы удовлетворить условию фильтра.
Пример:
matchExpressions: - key: tier operator: In values: - production - staging - key: tier operator: NotIn values: - production
- spec.podLabelSelector.matchExpressions.key
Имя метки.
- spec.podLabelSelector.matchExpressions.operator
Оператор сравнения.
Допустимые значения:
In
,NotIn
,Exists
,DoesNotExist
- spec.podLabelSelector.matchExpressions.values
Значение метки.
- Элемент массива
Шаблон:
[a-z0-9]([-a-z0-9]*[a-z0-9])?
Длина:
1..63
- spec.podLabelSelector.matchLabels
- spec.priorityClassThreshold
Ограничение обработки подов по классу приоритета. Только поды, чей приоритет ниже установленного значения, могут быть вытеснены.
Можно указать либо название класса приоритета (priorityClassThreshold.name), либо непосредственно значение класса приоритета (priorityThreshold.value).
По умолчанию это значение установлено на класс приоритета
system-cluster-critical
.- spec.priorityClassThreshold.name
Имя класса приоритета.
- spec.priorityClassThreshold.value
Значение класса приоритета.
- spec.strategies
Обязательный параметр
Настройки стратегий данного экземпляра ресурса Descheduler.
- spec.strategies.highNodeUtilization
Стратегия определяет недостаточно нагруженные узлы и вытесняет с них поды, чтобы распределить их компактнее, на меньшем числе узлов.
Недостаточно нагруженный узел — узел, использование ресурсов которого меньше всех пороговых значений, заданных в секции параметров thresholds.
Стратегия предназначена для использования совместно с авто-масштабированием, чтобы сокращать количество недостаточно нагруженных узлов. При использовании стратегии необходимо также настроить стратегию оценки планировщика как
MostAllocated
.В GKE нельзя настроить конфигурацию планировщика по умолчанию, но можно использовать стратегию
optimize-utilization
или развернуть второй пользовательский планировщик.Использование ресурсов узла учитывает extended-ресурсы и рассчитывается на основе запросов и лимитов подов, а не фактическом потреблении.
- spec.strategies.highNodeUtilization.enabled
Делает стратегию активной.
По умолчанию:
false
- spec.strategies.highNodeUtilization.thresholds
Устанавливает пороговые значения для определения недостаточно нагруженных узлов.
Если использование ресурсов узла меньше всех пороговых значений, то узел считается недостаточно нагруженным.
- spec.strategies.highNodeUtilization.thresholds.cpu
Процент отношения запрошенных ресурсов по CPU на узле к доступным.
По умолчанию:
20
- spec.strategies.highNodeUtilization.thresholds.memory
Процент отношения запрошенных ресурсов по памяти на узле к доступным.
По умолчанию:
20
- spec.strategies.highNodeUtilization.thresholds.pods
Процент количества подов от установленной емкости узла.
По умолчанию:
20
- spec.strategies.lowNodeUtilization
Стратегия выявляет недостаточно нагруженные узлы и вытесняет поды с других, избыточно нагруженных узлов. Стратегия предполагает, что пересоздание вытесненных подов произойдет на недостаточно нагруженных узлах (при обычном поведении планировщика).
Недостаточно нагруженный узел — узел, использование ресурсов которого меньше всех пороговых значений, заданных в секции параметров thresholds.
Избыточно нагруженный узел — узел, использование ресурсов которого больше хотя бы одного из пороговых значений, заданных в секции параметров targetThresholds.
Использование ресурсов узла учитывает extended-ресурсы и рассчитывается на основе запросов и лимитов подов, а не фактическом потреблении.
- spec.strategies.lowNodeUtilization.enabled
Делает стратегию активной.
По умолчанию:
false
- spec.strategies.lowNodeUtilization.targetThresholds
Устанавливает пороговые значения для определения избыточно нагруженных узлов.
Если использование ресурсов узла больше хотя бы одного из пороговых значений, то узел считается избыточно нагруженным.
- spec.strategies.lowNodeUtilization.targetThresholds.cpu
Процент отношения запрошенных ресурсов по CPU на узле к доступным.
По умолчанию:
70
- spec.strategies.lowNodeUtilization.targetThresholds.memory
Процент отношения запрошенных ресурсов по памяти на узле к доступным.
По умолчанию:
70
- spec.strategies.lowNodeUtilization.targetThresholds.pods
Процент количества подов от установленной емкости узла.
По умолчанию:
70
- spec.strategies.lowNodeUtilization.thresholds
Устанавливает пороговые значения для определения недостаточно нагруженных узлов.
Если использование ресурсов узла меньше всех пороговых значений, то узел считается недостаточно нагруженным.
- spec.strategies.lowNodeUtilization.thresholds.cpu
Процент отношения запрошенных ресурсов по CPU на узле к доступным.
По умолчанию:
20
- spec.strategies.lowNodeUtilization.thresholds.memory
Процент отношения запрошенных ресурсов по памяти на узле к доступным.
По умолчанию:
20
- spec.strategies.lowNodeUtilization.thresholds.pods
Процент количества подов от установленной емкости узла.
По умолчанию:
20
- spec.strategies.removeDuplicates
Стратегия следит за тем, чтобы на одном узле не находилось больше одного пода ReplicaSet, ReplicationController, StatefulSet или подов одного задания (Job). Если таких подов два или больше, модуль вытесняет лишние поды, чтобы они лучше распределились по кластеру.
- spec.strategies.removeDuplicates.enabled
Делает стратегию активной.
По умолчанию:
false
- spec.strategies.removePodsViolatingInterPodAntiAffinity
Стратегия гарантирует, что поды, нарушающие правила inter-pod affinity и anti-affinity, будут удалены с узлов.
Такая ситуация может возникнуть, если правила антипривязки для подов
podB
иpodC
создаются после того, как они уже запущены на узле.- spec.strategies.removePodsViolatingInterPodAntiAffinity.enabled
Делает стратегию активной.
По умолчанию:
false
- spec.strategies.removePodsViolatingNodeAffinity
Стратегия гарантирует, что все поды, которые нарушают правила node affinity, в конечном счете будут удалены с узлов.
По сути, в зависимости от настроек параметра nodeAffinityType, стратегия превращает правило
requiredDuringSchedulingIgnoredDuringExecution
node affinity пода в правилоrequiredDuringSchedulingRequiredDuringExecution
, а правилоpreferredDuringSchedulingIgnoredDuringExecution
в правилоpreferredDuringSchedulingPreferredDuringExecution
.- spec.strategies.removePodsViolatingNodeAffinity.enabled
Делает стратегию активной.
По умолчанию:
false
- spec.strategies.removePodsViolatingNodeAffinity.nodeAffinityType
Определяет список используемых правил node affinity.
По умолчанию:
["requiredDuringSchedulingIgnoredDuringExecution"]
- Элемент массива
Допустимые значения:
requiredDuringSchedulingIgnoredDuringExecution
,preferredDuringSchedulingIgnoredDuringExecution
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
Описание одного экземпляра descheduler.
- apiVersion
- kind
- metadata
- metadata.name
- spec
Обязательный параметр
Описывает поведение экземпляра descheduler.
- spec.deploymentTemplate
Описание шаблона Deployment’а descheduler.
- spec.deploymentTemplate.nodeSelector
- spec.deploymentTemplate.tolerations
- spec.deploymentTemplate.tolerations.effect
- spec.deploymentTemplate.tolerations.key
- spec.deploymentTemplate.tolerations.operator
- spec.deploymentTemplate.tolerations.tolerationSeconds
- spec.deploymentTemplate.tolerations.value
- spec.deschedulerPolicy.globalParameters
Параметры, применяемые ко всем политикам.
- spec.deschedulerPolicy.globalParameters.evictFailedBarePods
Позволяет вытеснять поды без
ownerReferences
и в состоянииfailed
. - spec.deschedulerPolicy.globalParameters.evictLocalStoragePods
Позволяет вытеснять поды, использующие локальное хранилище.
- spec.deschedulerPolicy.globalParameters.evictSystemCriticalPods
Позволяет вытеснять поды любого приоритета (включая системные поды Kubernetes).
- spec.deschedulerPolicy.globalParameters.ignorePvcPods
Предотвращает вытеснение подов с PVC (Persistent Volume Claims).
- spec.deschedulerPolicy.globalParameters.maxNoOfPodsToEvictPerNamespace
Ограничивает максимальное количество подов, которые могут быть вытеснены в пределах одного пространства имен.
- spec.deschedulerPolicy.globalParameters.maxNoOfPodsToEvictPerNode
Ограничивает максимальное количество подов, которые могут быть вытеснены с одного узла.
- spec.deschedulerPolicy.globalParameters.nodeSelector
- spec.deschedulerPolicy.strategies
Список стратегий с соответствующими параметрами для данного экземпляра Descheduler.
- spec.deschedulerPolicy.strategies.highNodeUtilization
Эта стратегия находит узлы с недостаточной загрузкой и вытесняет с них поды, предполагая, что эти поды будут компактно размещены на меньшем количестве узлов.
- spec.deschedulerPolicy.strategies.highNodeUtilization.enabled
Обязательный параметр
- spec.deschedulerPolicy.strategies.highNodeUtilization.namespaceFilter
Ограничивает пространства имен, к которым применяется эта стратегия.
- spec.deschedulerPolicy.strategies.highNodeUtilization.nodeFilter
Фильтрует узлы, к которым применяется стратегия.
- spec.deschedulerPolicy.strategies.highNodeUtilization.nodeFit
Если установлено значение
true
, descheduler будет учитывать, смогут ли поды, соответствующие критериям вытеснения, быть размещены на других узлах перед тем, как их вытеснить. - spec.deschedulerPolicy.strategies.highNodeUtilization.priorityFilter
Только поды с приоритетом ниже этого значения будут вытеснены.
- spec.deschedulerPolicy.strategies.lowNodeUtilization
Эта стратегия находит узлы с низкой загрузкой и, если возможно, вытесняет с других узлов поды, предполагая, что новые экземпляры вытесненных подов будут размещены на этих менее загруженных узлах.
- spec.deschedulerPolicy.strategies.lowNodeUtilization.enabled
Обязательный параметр
- spec.deschedulerPolicy.strategies.lowNodeUtilization.namespaceFilter
Ограничивает пространства имен, к которым применяется эта стратегия.
- spec.deschedulerPolicy.strategies.lowNodeUtilization.nodeFilter
Фильтрует узлы, к которым применяется стратегия.
- spec.deschedulerPolicy.strategies.lowNodeUtilization.nodeFit
Если установлено значение
true
, descheduler будет учитывать, смогут ли поды, соответствующие критериям вытеснения, быть размещены на других узлах перед тем, как их вытеснить. - spec.deschedulerPolicy.strategies.lowNodeUtilization.priorityFilter
Только поды с приоритетом ниже этого значения будут вытеснены.
- spec.deschedulerPolicy.strategies.removeDuplicates
Эта стратегия гарантирует, что на одном узле будет работать только один под, связанный с ReplicaSet (RS), ReplicationController (RC), StatefulSet или Job.
- spec.deschedulerPolicy.strategies.removeDuplicates.enabled
Обязательный параметр
- spec.deschedulerPolicy.strategies.removeDuplicates.namespaceFilter
Ограничивает пространства имен, к которым применяется эта стратегия.
- spec.deschedulerPolicy.strategies.removeDuplicates.nodeFilter
Фильтрует узлы, к которым применяется стратегия.
- spec.deschedulerPolicy.strategies.removeDuplicates.nodeFit
Если установлено значение
true
, descheduler будет учитывать, смогут ли поды, соответствующие критериям вытеснения, быть размещены на других узлах перед тем, как их вытеснить. - spec.deschedulerPolicy.strategies.removeDuplicates.priorityFilter
Только поды с приоритетом ниже этого значения будут вытеснены.
- spec.deschedulerPolicy.strategies.removeFailedPods
Эта стратегия вытесняет поды, находящиеся в статусе
failed
.- spec.deschedulerPolicy.strategies.removeFailedPods.enabled
Обязательный параметр
- spec.deschedulerPolicy.strategies.removeFailedPods.namespaceFilter
Ограничивает пространства имен, к которым применяется эта стратегия.
- spec.deschedulerPolicy.strategies.removeFailedPods.nodeFilter
Фильтрует узлы, к которым применяется стратегия.
- spec.deschedulerPolicy.strategies.removeFailedPods.nodeFit
Если установлено значение
true
, descheduler будет учитывать, смогут ли поды, соответствующие критериям вытеснения, быть размещены на других узлах перед тем, как их вытеснить. - spec.deschedulerPolicy.strategies.removeFailedPods.priorityFilter
Только поды с приоритетом ниже этого значения будут вытеснены.
- spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts
Эта стратегия гарантирует, что поды с слишком большим количеством перезапусков будут удалены с узлов.
- spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.enabled
Обязательный параметр
- spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.namespaceFilter
Ограничивает пространства имен, к которым применяется эта стратегия.
- spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.nodeFilter
Фильтрует узлы, к которым применяется стратегия.
- spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.nodeFit
Если установлено значение
true
, descheduler будет учитывать, смогут ли поды, соответствующие критериям вытеснения, быть размещены на других узлах перед тем, как их вытеснить. - spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.priorityFilter
Только поды с приоритетом ниже этого значения будут вытеснены.
- spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity
Эта стратегия гарантирует, что поды, которые не могут располагаться рядом с другими подами по определённым условиям, будут удалены с узлов.
- spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.enabled
Обязательный параметр
- spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.namespaceFilter
Ограничивает пространства имен, к которым применяется эта стратегия.
- spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.nodeFilter
Фильтрует узлы, к которым применяется стратегия.
- spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.nodeFit
Если установлено значение
true
, descheduler будет учитывать, смогут ли поды, соответствующие критериям вытеснения, быть размещены на других узлах перед тем, как их вытеснить. - spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.priorityFilter
Только поды с приоритетом ниже этого значения будут вытеснены.
- spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity
Эта стратегия гарантирует, что все поды которые не могут быть размещены на определённых узлах, в конечном итоге будут удалены с узлов.
- spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.enabled
Обязательный параметр
- spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.namespaceFilter
Ограничивает пространства имен, к которым применяется эта стратегия.
- spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.nodeFilter
Фильтрует узлы, к которым применяется стратегия.
- spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.nodeFit
Если установлено значение
true
, descheduler будет учитывать, смогут ли поды, соответствующие критериям вытеснения, быть размещены на других узлах перед тем, как их вытеснить. - spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.priorityFilter
Только поды с приоритетом ниже этого значения будут вытеснены.
- spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints
Эта стратегия гарантирует, что поды, нарушающие taint-метки с правилом
NoSchedule
на узлах, будут удалены.- spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.enabled
Обязательный параметр
- spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.namespaceFilter
Ограничивает пространства имен, к которым применяется эта стратегия.
- spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.nodeFilter
Фильтрует узлы, к которым применяется стратегия.
- spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.nodeFit
Если установлено значение
true
, descheduler будет учитывать, смогут ли поды, соответствующие критериям вытеснения, быть размещены на других узлах перед тем, как их вытеснить. - spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.priorityFilter
Только поды с приоритетом ниже этого значения будут вытеснены.
- spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint
Эта стратегия гарантирует, что поды, нарушающие ограничения распределения по топологии (topology spread constraints), будут вытеснены с узлов.
- spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.enabled
Обязательный параметр
- spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.namespaceFilter
Ограничивает пространства имен, к которым применяется эта стратегия.
- spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.nodeFilter
Фильтрует узлы, к которым применяется стратегия.
- spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.nodeFit
Если установлено значение
true
, descheduler будет учитывать, смогут ли поды, соответствующие критериям вытеснения, быть размещены на других узлах перед тем, как их вытеснить. - spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.priorityFilter
Только поды с приоритетом ниже этого значения будут вытеснены.