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 и strategies соответствуют документации descheduler.

      • 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
            объект

            Только поды с приоритетом ниже этого значения будут вытеснены.