kubernetes reference contenttype tool reference Resource Types title Kubernetes Custom Metrics v1beta2 package custom metrics k8s io v1beta2 p Package v1beta2 is the v1beta2 version of the custommetrics API p autogenerated true

Answer:
---
title: Kubernetes Custom Metrics (v1beta2)
content_type: tool-reference
package: custom.metrics.k8s.io/v1beta2
auto_generated: true
---

Package v1beta2 is the v1beta2 version of the custom_metrics API.

## Resource Types

- [MetricListOptions](#custom-metrics-k8s-io-v1beta2-MetricListOptions)
- [MetricValue](#custom-metrics-k8s-io-v1beta2-MetricValue)
- [MetricValueList](#custom-metrics-k8s-io-v1beta2-MetricValueList)

## `MetricListOptions`     {#custom-metrics-k8s-io-v1beta2-MetricListOptions}

MetricListOptions is used to select metrics by their label selectors

Field	Description

apiVersion
string	custom.metrics.k8s.io/v1beta2

kind
string	MetricListOptions

labelSelector

string

A selector to restrict the list of returned objects by their labels.
Defaults to everything.

metricLabelSelector

string

A selector to restrict the list of returned metrics by their labels

## `MetricValue`     {#custom-metrics-k8s-io-v1beta2-MetricValue}

**Appears in:**

- [MetricValueList](#custom-metrics-k8s-io-v1beta2-MetricValueList)

MetricValue is the metric value for some object

Field	Description

apiVersion
string	custom.metrics.k8s.io/v1beta2

kind
string	MetricValue

describedObject [Required]

core/v1.ObjectReference

a reference to the described object

metric [Required]

MetricIdentifier

   No description provided.

timestamp [Required]

meta/v1.Time

indicates the time at which the metrics were produced

windowSeconds [Required]

int64

indicates the window ([Timestamp-Window, Timestamp]) from
which these metrics were calculated, when returning rate
metrics calculated from cumulative metrics (or zero for
non-calculated instantaneous metrics).

value [Required]

k8s.io/apimachinery/pkg/api/resource.Quantity

the value of the metric for this

## `MetricValueList`     {#custom-metrics-k8s-io-v1beta2-MetricValueList}

MetricValueList is a list of values for a given metric for some set of objects

Field	Description

apiVersion
string	custom.metrics.k8s.io/v1beta2

kind
string	MetricValueList

metadata [Required]

meta/v1.ListMeta

   No description provided.

items [Required]

[]MetricValue

the value of the metric across the described objects

## `MetricIdentifier`     {#custom-metrics-k8s-io-v1beta2-MetricIdentifier}

**Appears in:**

- [MetricValue](#custom-metrics-k8s-io-v1beta2-MetricValue)

MetricIdentifier identifies a metric by name and, optionally, selector

Field	Description

name [Required]

string

name is the name of the given metric

selector

meta/v1.LabelSelector

selector represents the label selector that could be used to select
this metric, and will generally just be the selector passed in to
the query used to fetch this metric.
When left blank, only the metric's Name will be used to gather metrics.

title  Kubernetes Custom Metrics  v1beta2  content type  tool reference package  custom metrics k8s io v1beta2 auto generated  true      p Package v1beta2 is the v1beta2 version of the custom metrics API   p       Resource Types       MetricListOptions   custom metrics k8s io v1beta2 MetricListOptions     MetricValue   custom metrics k8s io v1beta2 MetricValue     MetricValueList   custom metrics k8s io v1beta2 MetricValueList               MetricListOptions        custom metrics k8s io v1beta2 MetricListOptions          p MetricListOptions is used to select metrics by their label selectors  p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody        tr  td  code apiVersion  code  br  string  td  td  code custom metrics k8s io v1beta2  code   td   tr   tr  td  code kind  code  br  string  td  td  code MetricListOptions  code   td   tr           tr  td  code labelSelector  code  br    code string  code    td   td      p A selector to restrict the list of returned objects by their labels  Defaults to everything   p    td    tr   tr  td  code metricLabelSelector  code  br    code string  code    td   td      p A selector to restrict the list of returned metrics by their labels  p    td    tr    tbody    table       MetricValue        custom metrics k8s io v1beta2 MetricValue          Appears in        MetricValueList   custom metrics k8s io v1beta2 MetricValueList     p MetricValue is the metric value for some object  p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody        tr  td  code apiVersion  code  br  string  td  td  code custom metrics k8s io v1beta2  code   td   tr   tr  td  code kind  code  br  string  td  td  code MetricValue  code   td   tr           tr  td  code describedObject  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  objectreference v1 core   code core v1 ObjectReference  code   a    td   td      p a reference to the described object  p    td    tr   tr  td  code metric  code   B  Required   B  br    a href   custom metrics k8s io v1beta2 MetricIdentifier   code MetricIdentifier  code   a    td   td      span class  text muted  No description provided   span   td    tr   tr  td  code timestamp  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  time v1 meta   code meta v1 Time  code   a    td   td      p indicates the time at which the metrics were produced  p    td    tr   tr  td  code windowSeconds  code   B  Required   B  br    code int64  code    td   td      p indicates the window   Timestamp Window  Timestamp   from which these metrics were calculated  when returning rate metrics calculated from cumulative metrics  or zero for non calculated instantaneous metrics    p    td    tr   tr  td  code value  code   B  Required   B  br    a href  https   pkg go dev k8s io apimachinery pkg api resource Quantity   code k8s io apimachinery pkg api resource Quantity  code   a    td   td      p the value of the metric for this  p    td    tr    tbody    table       MetricValueList        custom metrics k8s io v1beta2 MetricValueList          p MetricValueList is a list of values for a given metric for some set of objects  p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody        tr  td  code apiVersion  code  br  string  td  td  code custom metrics k8s io v1beta2  code   td   tr   tr  td  code kind  code  br  string  td  td  code MetricValueList  code   td   tr           tr  td  code metadata  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  listmeta v1 meta   code meta v1 ListMeta  code   a    td   td      span class  text muted  No description provided   span   td    tr   tr  td  code items  code   B  Required   B  br    a href   custom metrics k8s io v1beta2 MetricValue   code   MetricValue  code   a    td   td      p the value of the metric across the described objects  p    td    tr    tbody    table       MetricIdentifier        custom metrics k8s io v1beta2 MetricIdentifier          Appears in        MetricValue   custom metrics k8s io v1beta2 MetricValue     p MetricIdentifier identifies a metric by name and  optionally  selector  p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody           tr  td  code name  code   B  Required   B  br    code string  code    td   td      p name is the name of the given metric  p    td    tr   tr  td  code selector  code  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  labelselector v1 meta   code meta v1 LabelSelector  code   a    td   td      p selector represents the label selector that could be used to select this metric  and will generally just be the selector passed in to the query used to fetch this metric  When left blank  only the metric s Name will be used to gather metrics   p    td    tr    tbody    table


kubernetes reference contenttype tool reference package metrics k8s io v1beta1 title Kubernetes Metrics v1beta1 Resource Types p Package v1beta1 is the v1beta1 version of the metrics API p autogenerated true

Answer:
---
title: Kubernetes Metrics (v1beta1)
content_type: tool-reference
package: metrics.k8s.io/v1beta1
auto_generated: true
---

Package v1beta1 is the v1beta1 version of the metrics API.

## Resource Types

- [NodeMetrics](#metrics-k8s-io-v1beta1-NodeMetrics)
- [NodeMetricsList](#metrics-k8s-io-v1beta1-NodeMetricsList)
- [PodMetrics](#metrics-k8s-io-v1beta1-PodMetrics)
- [PodMetricsList](#metrics-k8s-io-v1beta1-PodMetricsList)

## `NodeMetrics`     {#metrics-k8s-io-v1beta1-NodeMetrics}

**Appears in:**

- [NodeMetricsList](#metrics-k8s-io-v1beta1-NodeMetricsList)

NodeMetrics sets resource usage metrics of a node.

Field	Description

apiVersion
string	metrics.k8s.io/v1beta1

kind
string	NodeMetrics

metadata

meta/v1.ObjectMeta

Standard object's metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

Refer to the Kubernetes API documentation for the fields of the metadata field.

timestamp [Required]

meta/v1.Time

The following fields define time interval from which metrics were
collected from the interval [Timestamp-Window, Timestamp].

window [Required]

meta/v1.Duration

   No description provided.

usage [Required]

core/v1.ResourceList

The memory usage is the memory working set.

## `NodeMetricsList`     {#metrics-k8s-io-v1beta1-NodeMetricsList}

NodeMetricsList is a list of NodeMetrics.

Field	Description

apiVersion
string	metrics.k8s.io/v1beta1

kind
string	NodeMetricsList

metadata [Required]

meta/v1.ListMeta

Standard list metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

items [Required]

[]NodeMetrics

List of node metrics.

## `PodMetrics`     {#metrics-k8s-io-v1beta1-PodMetrics}

**Appears in:**

- [PodMetricsList](#metrics-k8s-io-v1beta1-PodMetricsList)

PodMetrics sets resource usage metrics of a pod.

Field	Description

apiVersion
string	metrics.k8s.io/v1beta1

kind
string	PodMetrics

metadata

meta/v1.ObjectMeta

Standard object's metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

Refer to the Kubernetes API documentation for the fields of the metadata field.

timestamp [Required]

meta/v1.Time

The following fields define time interval from which metrics were
collected from the interval [Timestamp-Window, Timestamp].

window [Required]

meta/v1.Duration

   No description provided.

containers [Required]

[]ContainerMetrics

Metrics for all containers are collected within the same time window.

## `PodMetricsList`     {#metrics-k8s-io-v1beta1-PodMetricsList}

PodMetricsList is a list of PodMetrics.

Field	Description

apiVersion
string	metrics.k8s.io/v1beta1

kind
string	PodMetricsList

metadata [Required]

meta/v1.ListMeta

Standard list metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

items [Required]

[]PodMetrics

List of pod metrics.

## `ContainerMetrics`     {#metrics-k8s-io-v1beta1-ContainerMetrics}

**Appears in:**

- [PodMetrics](#metrics-k8s-io-v1beta1-PodMetrics)

ContainerMetrics sets resource usage metrics of a container.

Field	Description

name [Required]

string

Container name corresponding to the one from pod.spec.containers.

usage [Required]

core/v1.ResourceList

The memory usage is the memory working set.

title  Kubernetes Metrics  v1beta1  content type  tool reference package  metrics k8s io v1beta1 auto generated  true      p Package v1beta1 is the v1beta1 version of the metrics API   p       Resource Types       NodeMetrics   metrics k8s io v1beta1 NodeMetrics     NodeMetricsList   metrics k8s io v1beta1 NodeMetricsList     PodMetrics   metrics k8s io v1beta1 PodMetrics     PodMetricsList   metrics k8s io v1beta1 PodMetricsList               NodeMetrics        metrics k8s io v1beta1 NodeMetrics          Appears in        NodeMetricsList   metrics k8s io v1beta1 NodeMetricsList     p NodeMetrics sets resource usage metrics of a node   p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody        tr  td  code apiVersion  code  br  string  td  td  code metrics k8s io v1beta1  code   td   tr   tr  td  code kind  code  br  string  td  td  code NodeMetrics  code   td   tr           tr  td  code metadata  code  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  objectmeta v1 meta   code meta v1 ObjectMeta  code   a    td   td      p Standard object s metadata  More info  https   git k8s io community contributors devel sig architecture api conventions md metadata  p  Refer to the Kubernetes API documentation for the fields of the  code metadata  code  field   td    tr   tr  td  code timestamp  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  time v1 meta   code meta v1 Time  code   a    td   td      p The following fields define time interval from which metrics were collected from the interval  Timestamp Window  Timestamp    p    td    tr   tr  td  code window  code   B  Required   B  br    a href  https   pkg go dev k8s io apimachinery pkg apis meta v1 Duration   code meta v1 Duration  code   a    td   td      span class  text muted  No description provided   span   td    tr   tr  td  code usage  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  resourcelist v1 core   code core v1 ResourceList  code   a    td   td      p The memory usage is the memory working set   p    td    tr    tbody    table       NodeMetricsList        metrics k8s io v1beta1 NodeMetricsList          p NodeMetricsList is a list of NodeMetrics   p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody        tr  td  code apiVersion  code  br  string  td  td  code metrics k8s io v1beta1  code   td   tr   tr  td  code kind  code  br  string  td  td  code NodeMetricsList  code   td   tr           tr  td  code metadata  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  listmeta v1 meta   code meta v1 ListMeta  code   a    td   td      p Standard list metadata  More info  https   git k8s io community contributors devel sig architecture api conventions md types kinds  p    td    tr   tr  td  code items  code   B  Required   B  br    a href   metrics k8s io v1beta1 NodeMetrics   code   NodeMetrics  code   a    td   td      p List of node metrics   p    td    tr    tbody    table       PodMetrics        metrics k8s io v1beta1 PodMetrics          Appears in        PodMetricsList   metrics k8s io v1beta1 PodMetricsList     p PodMetrics sets resource usage metrics of a pod   p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody        tr  td  code apiVersion  code  br  string  td  td  code metrics k8s io v1beta1  code   td   tr   tr  td  code kind  code  br  string  td  td  code PodMetrics  code   td   tr           tr  td  code metadata  code  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  objectmeta v1 meta   code meta v1 ObjectMeta  code   a    td   td      p Standard object s metadata  More info  https   git k8s io community contributors devel sig architecture api conventions md metadata  p  Refer to the Kubernetes API documentation for the fields of the  code metadata  code  field   td    tr   tr  td  code timestamp  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  time v1 meta   code meta v1 Time  code   a    td   td      p The following fields define time interval from which metrics were collected from the interval  Timestamp Window  Timestamp    p    td    tr   tr  td  code window  code   B  Required   B  br    a href  https   pkg go dev k8s io apimachinery pkg apis meta v1 Duration   code meta v1 Duration  code   a    td   td      span class  text muted  No description provided   span   td    tr   tr  td  code containers  code   B  Required   B  br    a href   metrics k8s io v1beta1 ContainerMetrics   code   ContainerMetrics  code   a    td   td      p Metrics for all containers are collected within the same time window   p    td    tr    tbody    table       PodMetricsList        metrics k8s io v1beta1 PodMetricsList          p PodMetricsList is a list of PodMetrics   p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody        tr  td  code apiVersion  code  br  string  td  td  code metrics k8s io v1beta1  code   td   tr   tr  td  code kind  code  br  string  td  td  code PodMetricsList  code   td   tr           tr  td  code metadata  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  listmeta v1 meta   code meta v1 ListMeta  code   a    td   td      p Standard list metadata  More info  https   git k8s io community contributors devel sig architecture api conventions md types kinds  p    td    tr   tr  td  code items  code   B  Required   B  br    a href   metrics k8s io v1beta1 PodMetrics   code   PodMetrics  code   a    td   td      p List of pod metrics   p    td    tr    tbody    table       ContainerMetrics        metrics k8s io v1beta1 ContainerMetrics          Appears in        PodMetrics   metrics k8s io v1beta1 PodMetrics     p ContainerMetrics sets resource usage metrics of a container   p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody           tr  td  code name  code   B  Required   B  br    code string  code    td   td      p Container name corresponding to the one from pod spec containers   p    td    tr   tr  td  code usage  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  resourcelist v1 core   code core v1 ResourceList  code   a    td   td      p The memory usage is the memory working set   p    td    tr    tbody    table


kubernetes reference title Kubernetes External Metrics v1beta1 contenttype tool reference p Package v1beta1 is the v1beta1 version of the external metrics API p Resource Types package external metrics k8s io v1beta1 autogenerated true

Answer:
---
title: Kubernetes External Metrics (v1beta1)
content_type: tool-reference
package: external.metrics.k8s.io/v1beta1
auto_generated: true
---

Package v1beta1 is the v1beta1 version of the external metrics API.

## Resource Types

- [ExternalMetricValue](#external-metrics-k8s-io-v1beta1-ExternalMetricValue)
- [ExternalMetricValueList](#external-metrics-k8s-io-v1beta1-ExternalMetricValueList)

## `ExternalMetricValue`     {#external-metrics-k8s-io-v1beta1-ExternalMetricValue}

**Appears in:**

- [ExternalMetricValueList](#external-metrics-k8s-io-v1beta1-ExternalMetricValueList)

ExternalMetricValue is a metric value for external metric
A single metric value is identified by metric name and a set of string labels.
For one metric there can be multiple values with different sets of labels.

Field	Description

apiVersion
string	external.metrics.k8s.io/v1beta1

kind
string	ExternalMetricValue

metricName [Required]

string

the name of the metric

metricLabels [Required]

map[string]string

a set of labels that identify a single time series for the metric

timestamp [Required]

meta/v1.Time

indicates the time at which the metrics were produced

window [Required]

int64

indicates the window ([Timestamp-Window, Timestamp]) from
which these metrics were calculated, when returning rate
metrics calculated from cumulative metrics (or zero for
non-calculated instantaneous metrics).

value [Required]

k8s.io/apimachinery/pkg/api/resource.Quantity

the value of the metric

## `ExternalMetricValueList`     {#external-metrics-k8s-io-v1beta1-ExternalMetricValueList}

ExternalMetricValueList is a list of values for a given metric for some set labels

Field	Description

apiVersion
string	external.metrics.k8s.io/v1beta1

kind
string	ExternalMetricValueList

metadata [Required]

meta/v1.ListMeta

   No description provided.

items [Required]

[]ExternalMetricValue

value of the metric matching a given set of labels

title  Kubernetes External Metrics  v1beta1  content type  tool reference package  external metrics k8s io v1beta1 auto generated  true      p Package v1beta1 is the v1beta1 version of the external metrics API   p       Resource Types       ExternalMetricValue   external metrics k8s io v1beta1 ExternalMetricValue     ExternalMetricValueList   external metrics k8s io v1beta1 ExternalMetricValueList               ExternalMetricValue        external metrics k8s io v1beta1 ExternalMetricValue          Appears in        ExternalMetricValueList   external metrics k8s io v1beta1 ExternalMetricValueList     p ExternalMetricValue is a metric value for external metric A single metric value is identified by metric name and a set of string labels  For one metric there can be multiple values with different sets of labels   p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody        tr  td  code apiVersion  code  br  string  td  td  code external metrics k8s io v1beta1  code   td   tr   tr  td  code kind  code  br  string  td  td  code ExternalMetricValue  code   td   tr           tr  td  code metricName  code   B  Required   B  br    code string  code    td   td      p the name of the metric  p    td    tr   tr  td  code metricLabels  code   B  Required   B  br    code map string string  code    td   td      p a set of labels that identify a single time series for the metric  p    td    tr   tr  td  code timestamp  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  time v1 meta   code meta v1 Time  code   a    td   td      p indicates the time at which the metrics were produced  p    td    tr   tr  td  code window  code   B  Required   B  br    code int64  code    td   td      p indicates the window   Timestamp Window  Timestamp   from which these metrics were calculated  when returning rate metrics calculated from cumulative metrics  or zero for non calculated instantaneous metrics    p    td    tr   tr  td  code value  code   B  Required   B  br    a href  https   pkg go dev k8s io apimachinery pkg api resource Quantity   code k8s io apimachinery pkg api resource Quantity  code   a    td   td      p the value of the metric  p    td    tr    tbody    table       ExternalMetricValueList        external metrics k8s io v1beta1 ExternalMetricValueList          p ExternalMetricValueList is a list of values for a given metric for some set labels  p     table class  table    thead  tr  th width  30   Field  th  th Description  th   tr   thead   tbody        tr  td  code apiVersion  code  br  string  td  td  code external metrics k8s io v1beta1  code   td   tr   tr  td  code kind  code  br  string  td  td  code ExternalMetricValueList  code   td   tr           tr  td  code metadata  code   B  Required   B  br    a href  https   kubernetes io docs reference generated kubernetes api v1 28  listmeta v1 meta   code meta v1 ListMeta  code   a    td   td      span class  text muted  No description provided   span   td    tr   tr  td  code items  code   B  Required   B  br    a href   external metrics k8s io v1beta1 ExternalMetricValue   code   ExternalMetricValue  code   a    td   td      p value of the metric matching a given set of labels  p    td    tr    tbody    table


kubernetes reference weight 20 file and passing its path as a command line argument feature state fork8sversion v1 25 state stable You can customize the behavior of the by writing a configuration contenttype concept title Scheduler Configuration

Answer:
---
title: Scheduler Configuration
content_type: concept
weight: 20
---

You can customize the behavior of the `kube-scheduler` by writing a configuration
file and passing its path as a command line argument.

<!-- overview -->

<!-- body -->

A scheduling Profile allows you to configure the different stages of scheduling
in the .
Each stage is exposed in an extension point. Plugins provide scheduling behaviors
by implementing one or more of these extension points.

You can specify scheduling profiles by running `kube-scheduler --config <filename>`,
using the
KubeSchedulerConfiguration [v1](/docs/reference/config-api/kube-scheduler-config.v1/)
struct.

A minimal configuration looks as follows:

```yaml
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
clientConnection:
  kubeconfig: /etc/srv/kubernetes/kube-scheduler/kubeconfig
```

KubeSchedulerConfiguration v1beta3 is deprecated in v1.26 and is removed in v1.29.
Please migrate KubeSchedulerConfiguration to [v1](/docs/reference/config-api/kube-scheduler-config.v1/).

## Profiles

A scheduling Profile allows you to configure the different stages of scheduling
in the .
Each stage is exposed in an [extension point](#extension-points).
[Plugins](#scheduling-plugins) provide scheduling behaviors by implementing one
or more of these extension points.

You can configure a single instance of `kube-scheduler` to run
[multiple profiles](#multiple-profiles).

### Extension points

Scheduling happens in a series of stages that are exposed through the following
extension points:

1. `queueSort`: These plugins provide an ordering function that is used to
   sort pending Pods in the scheduling queue. Exactly one queue sort plugin
   may be enabled at a time.
1. `preFilter`: These plugins are used to pre-process or check information
   about a Pod or the cluster before filtering. They can mark a pod as
   unschedulable.
1. `filter`: These plugins are the equivalent of Predicates in a scheduling
   Policy and are used to filter out nodes that can not run the Pod. Filters
   are called in the configured order. A pod is marked as unschedulable if no
   nodes pass all the filters.
1. `postFilter`: These plugins are called in their configured order when no
   feasible nodes were found for the pod. If any `postFilter` plugin marks the
   Pod _schedulable_, the remaining plugins are not called.
1. `preScore`: This is an informational extension point that can be used
   for doing pre-scoring work.
1. `score`: These plugins provide a score to each node that has passed the
   filtering phase. The scheduler will then select the node with the highest
   weighted scores sum.
1. `reserve`: This is an informational extension point that notifies plugins
   when resources have been reserved for a given Pod. Plugins also implement an
   `Unreserve` call that gets called in the case of failure during or after
   `Reserve`.
1. `permit`: These plugins can prevent or delay the binding of a Pod.
1. `preBind`: These plugins perform any work required before a Pod is bound.
1. `bind`: The plugins bind a Pod to a Node. `bind` plugins are called in order
   and once one has done the binding, the remaining plugins are skipped. At
   least one bind plugin is required.
1. `postBind`: This is an informational extension point that is called after
   a Pod has been bound.
1. `multiPoint`: This is a config-only field that allows plugins to be enabled
   or disabled for all of their applicable extension points simultaneously.

For each extension point, you could disable specific [default plugins](#scheduling-plugins)
or enable your own. For example:

```yaml
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - plugins:
      score:
        disabled:
        - name: PodTopologySpread
        enabled:
        - name: MyCustomPluginA
          weight: 2
        - name: MyCustomPluginB
          weight: 1
```

You can use `*` as name in the disabled array to disable all default plugins
for that extension point. This can also be used to rearrange plugins order, if
desired.

### Scheduling plugins

The following plugins, enabled by default, implement one or more of these
extension points:

- `ImageLocality`: Favors nodes that already have the container images that the
  Pod runs.
  Extension points: `score`.
- `TaintToleration`: Implements
  [taints and tolerations](/docs/concepts/scheduling-eviction/taint-and-toleration/).
  Implements extension points: `filter`, `preScore`, `score`.
- `NodeName`: Checks if a Pod spec node name matches the current node.
  Extension points: `filter`.
- `NodePorts`: Checks if a node has free ports for the requested Pod ports.
  Extension points: `preFilter`, `filter`.
- `NodeAffinity`: Implements
  [node selectors](/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)
  and [node affinity](/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity).
  Extension points: `filter`, `score`.
- `PodTopologySpread`: Implements
  [Pod topology spread](/docs/concepts/scheduling-eviction/topology-spread-constraints/).
  Extension points: `preFilter`, `filter`, `preScore`, `score`.
- `NodeUnschedulable`: Filters out nodes that have `.spec.unschedulable` set to
  true.
  Extension points: `filter`.
- `NodeResourcesFit`: Checks if the node has all the resources that the Pod is
  requesting. The score can use one of three strategies: `LeastAllocated`
  (default), `MostAllocated` and `RequestedToCapacityRatio`.
  Extension points: `preFilter`, `filter`, `score`.
- `NodeResourcesBalancedAllocation`: Favors nodes that would obtain a more
  balanced resource usage if the Pod is scheduled there.
  Extension points: `score`.
- `VolumeBinding`: Checks if the node has or if it can bind the requested
  .
  Extension points: `preFilter`, `filter`, `reserve`, `preBind`, `score`.

  `score` extension point is enabled when `VolumeCapacityPriority` feature is
  enabled. It prioritizes the smallest PVs that can fit the requested volume
  size.

- `VolumeRestrictions`: Checks that volumes mounted in the node satisfy
  restrictions that are specific to the volume provider.
  Extension points: `filter`.
- `VolumeZone`: Checks that volumes requested satisfy any zone requirements they
  might have.
  Extension points: `filter`.
- `NodeVolumeLimits`: Checks that CSI volume limits can be satisfied for the
  node.
  Extension points: `filter`.
- `EBSLimits`: Checks that AWS EBS volume limits can be satisfied for the node.
  Extension points: `filter`.
- `GCEPDLimits`: Checks that GCP-PD volume limits can be satisfied for the node.
  Extension points: `filter`.
- `AzureDiskLimits`: Checks that Azure disk volume limits can be satisfied for
  the node.
  Extension points: `filter`.
- `InterPodAffinity`: Implements
  [inter-Pod affinity and anti-affinity](/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity).
  Extension points: `preFilter`, `filter`, `preScore`, `score`.
- `PrioritySort`: Provides the default priority based sorting.
  Extension points: `queueSort`.
- `DefaultBinder`: Provides the default binding mechanism.
  Extension points: `bind`.
- `DefaultPreemption`: Provides the default preemption mechanism.
  Extension points: `postFilter`.

You can also enable the following plugins, through the component config APIs,
that are not enabled by default:

- `CinderLimits`: Checks that [OpenStack Cinder](https://docs.openstack.org/cinder/)
  volume limits can be satisfied for the node.
  Extension points: `filter`.

### Multiple profiles

You can configure `kube-scheduler` to run more than one profile.
Each profile has an associated scheduler name and can have a different set of
plugins configured in its [extension points](#extension-points).

With the following sample configuration, the scheduler will run with two
profiles: one with the default plugins and one with all scoring plugins
disabled.

```yaml
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: default-scheduler
  - schedulerName: no-scoring-scheduler
    plugins:
      preScore:
        disabled:
        - name: '*'
      score:
        disabled:
        - name: '*'
```

Pods that want to be scheduled according to a specific profile can include
the corresponding scheduler name in its `.spec.schedulerName`.

By default, one profile with the scheduler name `default-scheduler` is created.
This profile includes the default plugins described above. When declaring more
than one profile, a unique scheduler name for each of them is required.

If a Pod doesn't specify a scheduler name, kube-apiserver will set it to
`default-scheduler`. Therefore, a profile with this scheduler name should exist
to get those pods scheduled.

Pod's scheduling events have `.spec.schedulerName` as their `reportingController`.
Events for leader election use the scheduler name of the first profile in the list.

For more information, please refer to the `reportingController` section under
[Event API Reference](/docs/reference/kubernetes-api/cluster-resources/event-v1/).

All profiles must use the same plugin in the `queueSort` extension point and have
the same configuration parameters (if applicable). This is because the scheduler
only has one pending pods queue.

### Plugins that apply to multiple extension points {#multipoint}

Starting from `kubescheduler.config.k8s.io/v1beta3`, there is an additional field in the
profile config, `multiPoint`, which allows for easily enabling or disabling a plugin
across several extension points. The intent of `multiPoint` config is to simplify the
configuration needed for users and administrators when using custom profiles.

Consider a plugin, `MyPlugin`, which implements the `preScore`, `score`, `preFilter`,
and `filter` extension points. To enable `MyPlugin` for all its available extension
points, the profile config looks like:

```yaml
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: multipoint-scheduler
    plugins:
      multiPoint:
        enabled:
        - name: MyPlugin
```

This would equate to manually enabling `MyPlugin` for all of its extension
points, like so:

```yaml
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: non-multipoint-scheduler
    plugins:
      preScore:
        enabled:
        - name: MyPlugin
      score:
        enabled:
        - name: MyPlugin
      preFilter:
        enabled:
        - name: MyPlugin
      filter:
        enabled:
        - name: MyPlugin
```

One benefit of using `multiPoint` here is that if `MyPlugin` implements another
extension point in the future, the `multiPoint` config will automatically enable it
for the new extension.

Specific extension points can be excluded from `MultiPoint` expansion using
the `disabled` field for that extension point. This works with disabling default
plugins, non-default plugins, or with the wildcard (`'*'`) to disable all plugins.
An example of this, disabling `Score` and `PreScore`, would be:

```yaml
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: non-multipoint-scheduler
    plugins:
      multiPoint:
        enabled:
        - name: 'MyPlugin'
      preScore:
        disabled:
        - name: '*'
      score:
        disabled:
        - name: '*'
```

Starting from `kubescheduler.config.k8s.io/v1beta3`, all [default plugins](#scheduling-plugins)
are enabled internally through `MultiPoint`.
However, individual extension points are still available to allow flexible
reconfiguration of the default values (such as ordering and Score weights). For
example, consider two Score plugins `DefaultScore1` and `DefaultScore2`, each with
a weight of `1`. They can be reordered with different weights like so:

```yaml
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: multipoint-scheduler
    plugins:
      score:
        enabled:
        - name: 'DefaultScore2'
          weight: 5
```

In this example, it's unnecessary to specify the plugins in `MultiPoint` explicitly
because they are default plugins. And the only plugin specified in `Score` is `DefaultScore2`.
This is because plugins set through specific extension points will always take precedence
over `MultiPoint` plugins. So, this snippet essentially re-orders the two plugins
without needing to specify both of them.

The general hierarchy for precedence when configuring `MultiPoint` plugins is as follows:
1. Specific extension points run first, and their settings override whatever is set elsewhere
2. Plugins manually configured through `MultiPoint` and their settings
3. Default plugins and their default settings

To demonstrate the above hierarchy, the following example is based on these plugins:
|Plugin|Extension Points|
|---|---|
|`DefaultQueueSort`|`QueueSort`|
|`CustomQueueSort`|`QueueSort`|
|`DefaultPlugin1`|`Score`, `Filter`|
|`DefaultPlugin2`|`Score`|
|`CustomPlugin1`|`Score`, `Filter`|
|`CustomPlugin2`|`Score`, `Filter`|

A valid sample configuration for these plugins would be:

```yaml
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: multipoint-scheduler
    plugins:
      multiPoint:
        enabled:
        - name: 'CustomQueueSort'
        - name: 'CustomPlugin1'
          weight: 3
        - name: 'CustomPlugin2'
        disabled:
        - name: 'DefaultQueueSort'
      filter:
        disabled:
        - name: 'DefaultPlugin1'
      score:
        enabled:
        - name: 'DefaultPlugin2'
```

Note that there is no error for re-declaring a `MultiPoint` plugin in a specific
extension point. The re-declaration is ignored (and logged), as specific extension points
take precedence.

Besides keeping most of the config in one spot, this sample does a few things:
* Enables the custom `queueSort` plugin and disables the default one
* Enables `CustomPlugin1` and `CustomPlugin2`, which will run first for all of their extension points
* Disables `DefaultPlugin1`, but only for `filter`
* Reorders `DefaultPlugin2` to run first in `score` (even before the custom plugins)

In versions of the config before `v1beta3`, without `multiPoint`, the above snippet would equate to this:

```yaml
apiVersion: kubescheduler.config.k8s.io/v1beta2
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: multipoint-scheduler
    plugins:

      # Disable the default QueueSort plugin
      queueSort:
        enabled:
        - name: 'CustomQueueSort'
        disabled:
        - name: 'DefaultQueueSort'

      # Enable custom Filter plugins
      filter:
        enabled:
        - name: 'CustomPlugin1'
        - name: 'CustomPlugin2'
        - name: 'DefaultPlugin2'
        disabled:
        - name: 'DefaultPlugin1'

      # Enable and reorder custom score plugins
      score:
        enabled:
        - name: 'DefaultPlugin2'
          weight: 1
        - name: 'DefaultPlugin1'
          weight: 3
```

While this is a complicated example, it demonstrates the flexibility of `MultiPoint` config
as well as its seamless integration with the existing methods for configuring extension points.

## Scheduler configuration migrations

* With the v1beta2 configuration version, you can use a new score extension for the
  `NodeResourcesFit` plugin.
  The new extension combines the functionalities of the `NodeResourcesLeastAllocated`,
  `NodeResourcesMostAllocated` and `RequestedToCapacityRatio` plugins.
  For example, if you previously used the `NodeResourcesMostAllocated` plugin, you
  would instead use `NodeResourcesFit` (enabled by default) and add a `pluginConfig`
  with a `scoreStrategy` that is similar to:
  ```yaml
  apiVersion: kubescheduler.config.k8s.io/v1beta2
  kind: KubeSchedulerConfiguration
  profiles:
  - pluginConfig:
    - args:
        scoringStrategy:
          resources:
          - name: cpu
            weight: 1
          type: MostAllocated
      name: NodeResourcesFit
  ```

* The scheduler plugin `NodeLabel` is deprecated; instead, use the [`NodeAffinity`](/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) plugin (enabled by default) to achieve similar behavior.

* The scheduler plugin `ServiceAffinity` is deprecated; instead, use the [`InterPodAffinity`](/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity) plugin (enabled by default) to achieve similar behavior.

* The scheduler plugin `NodePreferAvoidPods` is deprecated; instead, use [node taints](/docs/concepts/scheduling-eviction/taint-and-toleration/) to achieve similar behavior.

* A plugin enabled in a v1beta2 configuration file takes precedence over the default configuration for that plugin.

* Invalid `host` or `port` configured for scheduler healthz and metrics bind address will cause validation failure.

* Three plugins' weight are increased by default:
  * `InterPodAffinity` from 1 to 2
  * `NodeAffinity` from 1 to 2
  * `TaintToleration` from 1 to 3

* The scheduler plugin `SelectorSpread` is removed, instead, use the `PodTopologySpread` plugin (enabled by default)
to achieve similar behavior.

##

* Read the [kube-scheduler reference](/docs/reference/command-line-tools-reference/kube-scheduler/)
* Learn about [scheduling](/docs/concepts/scheduling-eviction/kube-scheduler/)
* Read the [kube-scheduler configuration (v1)](/docs/reference/config-api/kube-scheduler-config.v1/) reference

title  Scheduler Configuration content type  concept weight  20        You can customize the behavior of the  kube scheduler  by writing a configuration file and passing its path as a command line argument        overview           body      A scheduling Profile allows you to configure the different stages of scheduling in the   Each stage is exposed in an extension point  Plugins provide scheduling behaviors by implementing one or more of these extension points   You can specify scheduling profiles by running  kube scheduler   config  filename    using the KubeSchedulerConfiguration  v1   docs reference config api kube scheduler config v1   struct   A minimal configuration looks as follows      yaml apiVersion  kubescheduler config k8s io v1 kind  KubeSchedulerConfiguration clientConnection    kubeconfig   etc srv kubernetes kube scheduler kubeconfig       KubeSchedulerConfiguration v1beta3 is deprecated in v1 26 and is removed in v1 29  Please migrate KubeSchedulerConfiguration to  v1   docs reference config api kube scheduler config v1         Profiles  A scheduling Profile allows you to configure the different stages of scheduling in the   Each stage is exposed in an  extension point   extension points    Plugins   scheduling plugins  provide scheduling behaviors by implementing one or more of these extension points   You can configure a single instance of  kube scheduler  to run  multiple profiles   multiple profiles        Extension points  Scheduling happens in a series of stages that are exposed through the following extension points   1   queueSort   These plugins provide an ordering function that is used to    sort pending Pods in the scheduling queue  Exactly one queue sort plugin    may be enabled at a time  1   preFilter   These plugins are used to pre process or check information    about a Pod or the cluster before filtering  They can mark a pod as    unschedulable  1   filter   These plugins are the equivalent of Predicates in a scheduling    Policy and are used to filter out nodes that can not run the Pod  Filters    are called in the configured order  A pod is marked as unschedulable if no    nodes pass all the filters  1   postFilter   These plugins are called in their configured order when no    feasible nodes were found for the pod  If any  postFilter  plugin marks the    Pod  schedulable   the remaining plugins are not called  1   preScore   This is an informational extension point that can be used    for doing pre scoring work  1   score   These plugins provide a score to each node that has passed the    filtering phase  The scheduler will then select the node with the highest    weighted scores sum  1   reserve   This is an informational extension point that notifies plugins    when resources have been reserved for a given Pod  Plugins also implement an     Unreserve  call that gets called in the case of failure during or after     Reserve   1   permit   These plugins can prevent or delay the binding of a Pod  1   preBind   These plugins perform any work required before a Pod is bound  1   bind   The plugins bind a Pod to a Node   bind  plugins are called in order    and once one has done the binding  the remaining plugins are skipped  At    least one bind plugin is required  1   postBind   This is an informational extension point that is called after    a Pod has been bound  1   multiPoint   This is a config only field that allows plugins to be enabled    or disabled for all of their applicable extension points simultaneously   For each extension point  you could disable specific  default plugins   scheduling plugins  or enable your own  For example      yaml apiVersion  kubescheduler config k8s io v1 kind  KubeSchedulerConfiguration profiles      plugins        score          disabled            name  PodTopologySpread         enabled            name  MyCustomPluginA           weight  2           name  MyCustomPluginB           weight  1      You can use     as name in the disabled array to disable all default plugins for that extension point  This can also be used to rearrange plugins order  if desired       Scheduling plugins  The following plugins  enabled by default  implement one or more of these extension points      ImageLocality   Favors nodes that already have the container images that the   Pod runs    Extension points   score      TaintToleration   Implements    taints and tolerations   docs concepts scheduling eviction taint and toleration      Implements extension points   filter    preScore    score      NodeName   Checks if a Pod spec node name matches the current node    Extension points   filter      NodePorts   Checks if a node has free ports for the requested Pod ports    Extension points   preFilter    filter      NodeAffinity   Implements    node selectors   docs concepts scheduling eviction assign pod node  nodeselector    and  node affinity   docs concepts scheduling eviction assign pod node  node affinity     Extension points   filter    score      PodTopologySpread   Implements    Pod topology spread   docs concepts scheduling eviction topology spread constraints      Extension points   preFilter    filter    preScore    score      NodeUnschedulable   Filters out nodes that have   spec unschedulable  set to   true    Extension points   filter      NodeResourcesFit   Checks if the node has all the resources that the Pod is   requesting  The score can use one of three strategies   LeastAllocated     default    MostAllocated  and  RequestedToCapacityRatio     Extension points   preFilter    filter    score      NodeResourcesBalancedAllocation   Favors nodes that would obtain a more   balanced resource usage if the Pod is scheduled there    Extension points   score      VolumeBinding   Checks if the node has or if it can bind the requested       Extension points   preFilter    filter    reserve    preBind    score         score  extension point is enabled when  VolumeCapacityPriority  feature is   enabled  It prioritizes the smallest PVs that can fit the requested volume   size        VolumeRestrictions   Checks that volumes mounted in the node satisfy   restrictions that are specific to the volume provider    Extension points   filter      VolumeZone   Checks that volumes requested satisfy any zone requirements they   might have    Extension points   filter      NodeVolumeLimits   Checks that CSI volume limits can be satisfied for the   node    Extension points   filter      EBSLimits   Checks that AWS EBS volume limits can be satisfied for the node    Extension points   filter      GCEPDLimits   Checks that GCP PD volume limits can be satisfied for the node    Extension points   filter      AzureDiskLimits   Checks that Azure disk volume limits can be satisfied for   the node    Extension points   filter      InterPodAffinity   Implements    inter Pod affinity and anti affinity   docs concepts scheduling eviction assign pod node  inter pod affinity and anti affinity     Extension points   preFilter    filter    preScore    score      PrioritySort   Provides the default priority based sorting    Extension points   queueSort      DefaultBinder   Provides the default binding mechanism    Extension points   bind      DefaultPreemption   Provides the default preemption mechanism    Extension points   postFilter    You can also enable the following plugins  through the component config APIs  that are not enabled by default      CinderLimits   Checks that  OpenStack Cinder  https   docs openstack org cinder     volume limits can be satisfied for the node    Extension points   filter        Multiple profiles  You can configure  kube scheduler  to run more than one profile  Each profile has an associated scheduler name and can have a different set of plugins configured in its  extension points   extension points    With the following sample configuration  the scheduler will run with two profiles  one with the default plugins and one with all scoring plugins disabled      yaml apiVersion  kubescheduler config k8s io v1 kind  KubeSchedulerConfiguration profiles      schedulerName  default scheduler     schedulerName  no scoring scheduler     plugins        preScore          disabled            name            score          disabled            name           Pods that want to be scheduled according to a specific profile can include the corresponding scheduler name in its   spec schedulerName    By default  one profile with the scheduler name  default scheduler  is created  This profile includes the default plugins described above  When declaring more than one profile  a unique scheduler name for each of them is required   If a Pod doesn t specify a scheduler name  kube apiserver will set it to  default scheduler   Therefore  a profile with this scheduler name should exist to get those pods scheduled    Pod s scheduling events have   spec schedulerName  as their  reportingController   Events for leader election use the scheduler name of the first profile in the list   For more information  please refer to the  reportingController  section under  Event API Reference   docs reference kubernetes api cluster resources event v1       All profiles must use the same plugin in the  queueSort  extension point and have the same configuration parameters  if applicable   This is because the scheduler only has one pending pods queue        Plugins that apply to multiple extension points   multipoint   Starting from  kubescheduler config k8s io v1beta3   there is an additional field in the profile config   multiPoint   which allows for easily enabling or disabling a plugin across several extension points  The intent of  multiPoint  config is to simplify the configuration needed for users and administrators when using custom profiles   Consider a plugin   MyPlugin   which implements the  preScore    score    preFilter   and  filter  extension points  To enable  MyPlugin  for all its available extension points  the profile config looks like      yaml apiVersion  kubescheduler config k8s io v1 kind  KubeSchedulerConfiguration profiles      schedulerName  multipoint scheduler     plugins        multiPoint          enabled            name  MyPlugin      This would equate to manually enabling  MyPlugin  for all of its extension points  like so      yaml apiVersion  kubescheduler config k8s io v1 kind  KubeSchedulerConfiguration profiles      schedulerName  non multipoint scheduler     plugins        preScore          enabled            name  MyPlugin       score          enabled            name  MyPlugin       preFilter          enabled            name  MyPlugin       filter          enabled            name  MyPlugin      One benefit of using  multiPoint  here is that if  MyPlugin  implements another extension point in the future  the  multiPoint  config will automatically enable it for the new extension   Specific extension points can be excluded from  MultiPoint  expansion using the  disabled  field for that extension point  This works with disabling default plugins  non default plugins  or with the wildcard         to disable all plugins  An example of this  disabling  Score  and  PreScore   would be      yaml apiVersion  kubescheduler config k8s io v1 kind  KubeSchedulerConfiguration profiles      schedulerName  non multipoint scheduler     plugins        multiPoint          enabled            name   MyPlugin        preScore          disabled            name            score          disabled            name           Starting from  kubescheduler config k8s io v1beta3   all  default plugins   scheduling plugins  are enabled internally through  MultiPoint   However  individual extension points are still available to allow flexible reconfiguration of the default values  such as ordering and Score weights   For example  consider two Score plugins  DefaultScore1  and  DefaultScore2   each with a weight of  1   They can be reordered with different weights like so      yaml apiVersion  kubescheduler config k8s io v1 kind  KubeSchedulerConfiguration profiles      schedulerName  multipoint scheduler     plugins        score          enabled            name   DefaultScore2            weight  5      In this example  it s unnecessary to specify the plugins in  MultiPoint  explicitly because they are default plugins  And the only plugin specified in  Score  is  DefaultScore2   This is because plugins set through specific extension points will always take precedence over  MultiPoint  plugins  So  this snippet essentially re orders the two plugins without needing to specify both of them   The general hierarchy for precedence when configuring  MultiPoint  plugins is as follows  1  Specific extension points run first  and their settings override whatever is set elsewhere 2  Plugins manually configured through  MultiPoint  and their settings 3  Default plugins and their default settings  To demonstrate the above hierarchy  the following example is based on these plugins   Plugin Extension Points              DefaultQueueSort   QueueSort     CustomQueueSort   QueueSort     DefaultPlugin1   Score    Filter     DefaultPlugin2   Score     CustomPlugin1   Score    Filter     CustomPlugin2   Score    Filter    A valid sample configuration for these plugins would be      yaml apiVersion  kubescheduler config k8s io v1 kind  KubeSchedulerConfiguration profiles      schedulerName  multipoint scheduler     plugins        multiPoint          enabled            name   CustomQueueSort            name   CustomPlugin1            weight  3           name   CustomPlugin2          disabled            name   DefaultQueueSort        filter          disabled            name   DefaultPlugin1        score          enabled            name   DefaultPlugin2       Note that there is no error for re declaring a  MultiPoint  plugin in a specific extension point  The re declaration is ignored  and logged   as specific extension points take precedence   Besides keeping most of the config in one spot  this sample does a few things    Enables the custom  queueSort  plugin and disables the default one   Enables  CustomPlugin1  and  CustomPlugin2   which will run first for all of their extension points   Disables  DefaultPlugin1   but only for  filter    Reorders  DefaultPlugin2  to run first in  score   even before the custom plugins   In versions of the config before  v1beta3   without  multiPoint   the above snippet would equate to this      yaml apiVersion  kubescheduler config k8s io v1beta2 kind  KubeSchedulerConfiguration profiles      schedulerName  multipoint scheduler     plugins           Disable the default QueueSort plugin       queueSort          enabled            name   CustomQueueSort          disabled            name   DefaultQueueSort           Enable custom Filter plugins       filter          enabled            name   CustomPlugin1            name   CustomPlugin2            name   DefaultPlugin2          disabled            name   DefaultPlugin1           Enable and reorder custom score plugins       score          enabled            name   DefaultPlugin2            weight  1           name   DefaultPlugin1            weight  3      While this is a complicated example  it demonstrates the flexibility of  MultiPoint  config as well as its seamless integration with the existing methods for configuring extension points      Scheduler configuration migrations      With the v1beta2 configuration version  you can use a new score extension for the    NodeResourcesFit  plugin    The new extension combines the functionalities of the  NodeResourcesLeastAllocated      NodeResourcesMostAllocated  and  RequestedToCapacityRatio  plugins    For example  if you previously used the  NodeResourcesMostAllocated  plugin  you   would instead use  NodeResourcesFit   enabled by default  and add a  pluginConfig    with a  scoreStrategy  that is similar to       yaml   apiVersion  kubescheduler config k8s io v1beta2   kind  KubeSchedulerConfiguration   profiles      pluginConfig        args          scoringStrategy            resources              name  cpu             weight  1           type  MostAllocated       name  NodeResourcesFit          The scheduler plugin  NodeLabel  is deprecated  instead  use the   NodeAffinity    docs concepts scheduling eviction assign pod node  affinity and anti affinity  plugin  enabled by default  to achieve similar behavior     The scheduler plugin  ServiceAffinity  is deprecated  instead  use the   InterPodAffinity    docs concepts scheduling eviction assign pod node  inter pod affinity and anti affinity  plugin  enabled by default  to achieve similar behavior     The scheduler plugin  NodePreferAvoidPods  is deprecated  instead  use  node taints   docs concepts scheduling eviction taint and toleration   to achieve similar behavior     A plugin enabled in a v1beta2 configuration file takes precedence over the default configuration for that plugin     Invalid  host  or  port  configured for scheduler healthz and metrics bind address will cause validation failure       Three plugins  weight are increased by default       InterPodAffinity  from 1 to 2      NodeAffinity  from 1 to 2      TaintToleration  from 1 to 3      The scheduler plugin  SelectorSpread  is removed  instead  use the  PodTopologySpread  plugin  enabled by default  to achieve similar behavior            Read the  kube scheduler reference   docs reference command line tools reference kube scheduler     Learn about  scheduling   docs concepts scheduling eviction kube scheduler     Read the  kube scheduler configuration  v1    docs reference config api kube scheduler config v1   reference