Descheduler

Scope: Cluster
Version: v1alpha1

Descheduler is a description of a single descheduler instance.

  • apiVersion
    string
  • kind
    string
  • metadata
    object
    • metadata.name
      string
  • spec
    object

    Required value

    Defines the behavior of a descheduler instance.

    • spec.deploymentTemplate
      object

      Defines Template of a descheduler Deployment.

      • spec.deploymentTemplate.nodeSelector
        object
      • spec.deploymentTemplate.tolerations
        array of objects
        • spec.deploymentTemplate.tolerations.effect
          string
        • spec.deploymentTemplate.tolerations.key
          string
        • spec.deploymentTemplate.tolerations.operator
          string
        • spec.deploymentTemplate.tolerations.tolerationSeconds
          integer
        • spec.deploymentTemplate.tolerations.value
          string
    • spec.deschedulerPolicy
      object

      globalParameters and strategies follow the descheduler’s documentation.

      • spec.deschedulerPolicy.globalParameters
        object

        Parameters that apply to all policies.

        • spec.deschedulerPolicy.globalParameters.evictFailedBarePods
          boolean

          Allows Pods without ownerReferences and in failed phase to be evicted.

        • spec.deschedulerPolicy.globalParameters.evictLocalStoragePods
          boolean

          Allows Pods using local storage to be evicted.

        • spec.deschedulerPolicy.globalParameters.evictSystemCriticalPods
          boolean

          Allows eviction of Pods of any priority (including Kubernetes system Pods).

        • spec.deschedulerPolicy.globalParameters.ignorePvcPods
          boolean

          Prevents Pods with PVCs from being evicted.

        • spec.deschedulerPolicy.globalParameters.maxNoOfPodsToEvictPerNamespace
          integer

          Restricts maximum of Pods to be evicted per namespace.

        • spec.deschedulerPolicy.globalParameters.maxNoOfPodsToEvictPerNode
          integer

          Restricts maximum of Pods to be evicted per node.

        • spec.deschedulerPolicy.globalParameters.nodeSelector
          string
      • spec.deschedulerPolicy.strategies
        object

        List of strategies with corresponding parameters for a given Descheduler instances.

        • spec.deschedulerPolicy.strategies.highNodeUtilization
          object

          This strategy finds nodes that are under utilized and evicts Pods from the nodes in the hope that these Pods will be scheduled compactly into fewer nodes.

          • spec.deschedulerPolicy.strategies.highNodeUtilization.enabled
            boolean

            Required value

          • spec.deschedulerPolicy.strategies.highNodeUtilization.namespaceFilter
            object

            Restricts Namespaces to which this strategy applies.

          • spec.deschedulerPolicy.strategies.highNodeUtilization.nodeFilter
            object

            Filters Nodes to which the strategy applies.

          • spec.deschedulerPolicy.strategies.highNodeUtilization.nodeFit
            boolean

            If set to true, the descheduler will consider whether or not the Pods that meet eviction criteria will fit on other nodes before evicting them.

          • spec.deschedulerPolicy.strategies.highNodeUtilization.priorityFilter
            object

            Only Pods with priority lower than this will be descheduled.

        • spec.deschedulerPolicy.strategies.lowNodeUtilization
          object

          This strategy finds nodes that are under utilized and evicts Pods, if possible, from other nodes in the hope that recreation of evicted Pods will be scheduled on these underutilized nodes.

          • spec.deschedulerPolicy.strategies.lowNodeUtilization.enabled
            boolean

            Required value

          • spec.deschedulerPolicy.strategies.lowNodeUtilization.namespaceFilter
            object

            Restricts Namespaces to which this strategy applies.

          • spec.deschedulerPolicy.strategies.lowNodeUtilization.nodeFilter
            object

            Filters Nodes to which the strategy applies.

          • spec.deschedulerPolicy.strategies.lowNodeUtilization.nodeFit
            boolean

            If set to true, the descheduler will consider whether or not the Pods that meet eviction criteria will fit on other nodes before evicting them.

          • spec.deschedulerPolicy.strategies.lowNodeUtilization.priorityFilter
            object

            Only Pods with priority lower than this will be descheduled.

        • spec.deschedulerPolicy.strategies.removeDuplicates
          object

          This strategy makes sure that there is only one Pod associated with a ReplicaSet (RS), ReplicationController (RC), StatefulSet, or Job running on the same node.

          • spec.deschedulerPolicy.strategies.removeDuplicates.enabled
            boolean

            Required value

          • spec.deschedulerPolicy.strategies.removeDuplicates.namespaceFilter
            object

            Restricts Namespaces to which this strategy applies.

          • spec.deschedulerPolicy.strategies.removeDuplicates.nodeFilter
            object

            Filters Nodes to which the strategy applies.

          • spec.deschedulerPolicy.strategies.removeDuplicates.nodeFit
            boolean

            If set to true, the descheduler will consider whether or not the Pods that meet eviction criteria will fit on other nodes before evicting them.

          • spec.deschedulerPolicy.strategies.removeDuplicates.priorityFilter
            object

            Only Pods with priority lower than this will be descheduled.

        • spec.deschedulerPolicy.strategies.removeFailedPods
          object

          This strategy evicts Pods that are in failed status phase.

          • spec.deschedulerPolicy.strategies.removeFailedPods.enabled
            boolean

            Required value

          • spec.deschedulerPolicy.strategies.removeFailedPods.namespaceFilter
            object

            Restricts Namespaces to which this strategy applies.

          • spec.deschedulerPolicy.strategies.removeFailedPods.nodeFilter
            object

            Filters Nodes to which the strategy applies.

          • spec.deschedulerPolicy.strategies.removeFailedPods.nodeFit
            boolean

            If set to true, the descheduler will consider whether or not the Pods that meet eviction criteria will fit on other nodes before evicting them.

          • spec.deschedulerPolicy.strategies.removeFailedPods.priorityFilter
            object

            Only Pods with priority lower than this will be descheduled.

        • spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts
          object

          This strategy makes sure that Pods having too many restarts are removed from nodes.

          • spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.enabled
            boolean

            Required value

          • spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.namespaceFilter
            object

            Restricts Namespaces to which this strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.nodeFilter
            object

            Filters Nodes to which the strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.nodeFit
            boolean

            If set to true, the descheduler will consider whether or not the Pods that meet eviction criteria will fit on other nodes before evicting them.

          • spec.deschedulerPolicy.strategies.removePodsHavingTooManyRestarts.priorityFilter
            object

            Only Pods with priority lower than this will be descheduled.

        • spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity
          object

          This strategy makes sure that Pods violating interpod anti-affinity are removed from nodes.

          • spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.enabled
            boolean

            Required value

          • spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.namespaceFilter
            object

            Restricts Namespaces to which this strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.nodeFilter
            object

            Filters Nodes to which the strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.nodeFit
            boolean

            If set to true, the descheduler will consider whether or not the Pods that meet eviction criteria will fit on other nodes before evicting them.

          • spec.deschedulerPolicy.strategies.removePodsViolatingInterPodAntiAffinity.priorityFilter
            object

            Only Pods with priority lower than this will be descheduled.

        • spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity
          object

          This strategy makes sure all Pods violating node affinity are eventually removed from nodes.

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.enabled
            boolean

            Required value

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.namespaceFilter
            object

            Restricts Namespaces to which this strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.nodeFilter
            object

            Filters Nodes to which the strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.nodeFit
            boolean

            If set to true, the descheduler will consider whether or not the Pods that meet eviction criteria will fit on other nodes before evicting them.

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeAffinity.priorityFilter
            object

            Only Pods with priority lower than this will be descheduled.

        • spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints
          object

          This strategy makes sure that Pods violating NoSchedule taints on nodes are removed.

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.enabled
            boolean

            Required value

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.namespaceFilter
            object

            Restricts Namespaces to which this strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.nodeFilter
            object

            Filters Nodes to which the strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.nodeFit
            boolean

            If set to true, the descheduler will consider whether or not the Pods that meet eviction criteria will fit on other nodes before evicting them.

          • spec.deschedulerPolicy.strategies.removePodsViolatingNodeTaints.priorityFilter
            object

            Only Pods with priority lower than this will be descheduled.

        • spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint
          object

          This strategy makes sure that Pods violating topology spread constraints are evicted from nodes.

          • spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.enabled
            boolean

            Required value

          • spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.namespaceFilter
            object

            Restricts Namespaces to which this strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.nodeFilter
            object

            Filters Nodes to which the strategy applies.

          • spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.nodeFit
            boolean

            If set to true, the descheduler will consider whether or not the Pods that meet eviction criteria will fit on other nodes before evicting them.

          • spec.deschedulerPolicy.strategies.removePodsViolatingTopologySpreadConstraint.priorityFilter
            object

            Only Pods with priority lower than this will be descheduled.