Descheduler
Scope: Cluster
Описание одного экземпляра descheduler
- строкаapiVersion
- строкаkind
- объектmetadata
- строкаmetadata.name
- объектspec
Обязательный параметр
Описывает поведение экземпляра descheduler.
- булевыйspec.evictLocalStoragePods
Позволяет вытеснять поды, использующие локальное хранилище.
По умолчанию:
false - объект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, стратегия превращает правило
requiredDuringSchedulingIgnoredDuringExecutionnode 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
Только поды с приоритетом ниже этого значения будут вытеснены.