# スケジューラーの設定

LLMS index: [llms.txt](/llms.txt)

---

<div class="feature-state-notice feature-stable">
      <span class="feature-state-name">FEATURE STATE:</span>
      <code>Kubernetes v1.25 [stable]</code>
    </div>
  



設定ファイルを作成し、そのパスをコマンドライン引数として渡すことで`kube-scheduler`の振る舞いをカスタマイズすることができます。

<!-- overview -->

<!-- body -->

スケジューリングプロファイルは、<a class='glossary-tooltip' title='コントロールプレーン上で動作するコンポーネントで、新しく作られたPodにノードが割り当てられているか監視し、割り当てられていなかった場合にそのPodを実行するノードを選択します。' data-bs-toggle='tooltip' data-bs-placement='top' href='/ja/docs/reference/command-line-tools-reference/kube-scheduler/' target='_blank' aria-label='kube-scheduler'>kube-scheduler</a>でスケジューリングの異なるステージを設定することができます。
各ステージは、拡張点として公開されています。
プラグインをそれらの拡張点に1つ以上実装することで、スケジューリングの振る舞いを変更できます。

KubeSchedulerConfiguration [v1](/docs/reference/config-api/kube-scheduler-config.v1/)構造体を使用して、`kube-scheduler --config <filename>`を実行することで、スケジューリングプロファイルを指定することができます。

最小限の設定は次の通りです。

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


<div class="alert alert-info" role="note"><h4 class="alert-heading">備考:</h4>KubeSchedulerConfiguration v1beta3は、v1.26で非推奨となりv1.29で削除されました。
KubeSchedulerConfigurationを<a href="/docs/reference/config-api/kube-scheduler-config.v1/">v1</a>へ移行するようにしてください。</div>


## プロファイル

スケジューリングプロファイルは、<a class='glossary-tooltip' title='コントロールプレーン上で動作するコンポーネントで、新しく作られたPodにノードが割り当てられているか監視し、割り当てられていなかった場合にそのPodを実行するノードを選択します。' data-bs-toggle='tooltip' data-bs-placement='top' href='/ja/docs/reference/command-line-tools-reference/kube-scheduler/' target='_blank' aria-label='kube-scheduler'>kube-scheduler</a>でスケジューリングの異なるステージを設定することができます。
各ステージは[拡張点](#extension-points)に公開されています。
[プラグイン](#scheduling-plugins)をそれらの拡張点に1つ以上実装することで、スケジューリングの振る舞いを変更できます。

単一の`kube-scheduler`インスタンスで[複数のプロファイル](#multiple-profiles)を実行するように設定することも可能です。

### 拡張点 {#extension-points}

スケジューリングは一連のステージで行われ、以下の拡張点に公開されています。

1. `queueSort`: これらのプラグインは、スケジューリングキューにある`pending`状態のPodをソートするための順序付け関数を提供します。
   同時に有効化できるプラグインは1つだけです。
1. `preFilter`: これらのプラグインは、フィルタリングをする前にPodやクラスターの情報のチェックや前処理のために使用されます。
   これらのプラグインは、Podをunschedulableとしてマークすることができます。
1. `filter`: これらのプラグインは、スケジューリングポリシーにおけるPredicatesに相当し、Podを実行不可能なノードを除外するために使用されます。
   フィルターは設定された順序で呼び出されます。
   すべてのフィルターを通過するノードがない場合、Podはunschedulableとしてマークされます。
1. `postFilter`: これらのプラグインは、Podを実行可能なノードが見つからなかった場合、設定された順序で呼び出されます。
   もし`postFilter`プラグインのいずれかが、Podを _スケジュール可能_ とマークした場合、残りの`postFilter`プラグインは呼び出されません。
1. `preScore`: これは、スコアリング前の作業を行う際に使用できる情報提供のための拡張点です。
1. `score`: これらのプラグインはフィルタリングフェーズを通過したそれぞれのノードに対してスコア付けを行います。
   その後スケジューラーは、最も高い重み付きスコアの合計を持つノードを選択します。
1. `reserve`: これは、特定のPodに対してリソースが予約された際に、プラグインに通知する、情報提供のための拡張点です。
   また、プラグインは`Unreserve`呼び出しも実装しており、これは`Reserve`中またはその後に失敗が発生した場合に呼び出されます。
1. `permit`: これらのプラグインは、Podのバインディングを防止または遅延させることができます。
1. `preBind`: これらのプラグインは、Podがバインドされる前に必要な処理を実行できます。
1. `bind`: これらのプラグインはPodをノードにバインドします。
   `bind`プラグインは順番に呼び出され、1つのプラグインがバインドを完了すると、残りのプラグインはスキップされます。
   `bind`プラグインは少なくとも1つは必要です。
1. `postBind`: これは、Podがバインドされた後に呼び出される情報提供のための拡張点です。
1. `multiPoint`: このフィールドは設定のみ可能で、プラグインが適用されるすべての拡張点に対して同時に有効化または無効化することができます。

次の例のように、それぞれの拡張点に対して、特定の[デフォルトプラグイン](#scheduling-plugins)を無効化、または自作のプラグインを有効化することができます。

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

`disabled`配列の`name`フィールドに`*`を使用することで、その拡張点の全てのデフォルトプラグインを無効化できます。
また、必要に応じてプラグインの順序を入れ替える場合にも使用されます。

### Scheduling plugins {#scheduling-plugins}

以下のプラグインはデフォルトで有効化されており、1つ以上の拡張点に実装されています。

- `ImageLocality`: Podが実行するコンテナイメージを既に持っているノードを優先します。
  拡張点: `score`
- `TaintToleration`: [TaintとToleration](/docs/concepts/scheduling-eviction/taint-and-toleration/)を実装します。
  実装する拡張点: `filter`、`preScore`、`score`
- `NodeName`: PodのSpecのノード名が、現在のノードと一致するかをチェックします。
  拡張点:`filter`
- `NodePorts`: 要求されたPodのポートに対して、ノードが空きポートを持っているかチェックします。
  拡張点: `preFilter`、`filter`
- `NodeAffinity`: [nodeSelector](/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)と[ノードアフィニティ](/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity)を実装します。
  拡張点: `filter`、`score`
- `PodTopologySpread`: [Podトポロジーの分散制約](/docs/concepts/scheduling-eviction/topology-spread-constraints/)を実装します。
  拡張点: `preFilter`、`filter`、`preScore`、`score`
- `NodeUnschedulable`: `.spec.unschedulable`がtrueに設定されているノードを除外します。
  拡張点: `filter`
- `NodeResourcesFit`: Podが要求しているすべてのリソースがノードにあるかをチェックします。
  スコアは3つのストラテジのうちの1つを使用します: `LeastAllocated`(デフォルト)、`MostAllocated`、`RequestedToCapacityRatio`。
  拡張点: `preFilter`、`filter`、`score`
- `NodeResourcesBalancedAllocation`: Podがスケジュールされた場合に、よりバランスの取れたリソース使用量となるノードを優先します。
  拡張点: `score`
- `VolumeBinding`: ノードが、要求された<a class='glossary-tooltip' title='データを格納するディレクトリで、Pod内のコンテナからアクセス可能です。' data-bs-toggle='tooltip' data-bs-placement='top' href='/ja/docs/concepts/storage/volumes/' target='_blank' aria-label='ボリューム'>ボリューム</a>を持っている、またはバインド可能かをチェックします。
  拡張点: `preFilter`、`filter`、`reserve`、`preBind`、`score`
  
<div class="alert alert-info" role="note"><h4 class="alert-heading">備考:</h4><code>score</code>拡張点は、<code>StorageCapacityScoring</code>機能が有効になっている時に有効化されます。
要求されたボリュームに適合する最小のPVを優先的に使用します。</div>

- `VolumeRestrictions`: ノードにマウントされたボリュームが、ボリュームプロバイダー固有の制限を満たしているかを確認します。
  拡張点: `filter`
- `VolumeZone`: 要求されたボリュームがゾーン要件を満たしているかどうかを確認します。
  拡張点: `filter`
- `NodeVolumeLimits`: ノードのCSIボリューム制限を満たすかどうかをチェックします。
  このプラグインは、ノードにCSIドライバーがインストールされていない場合に、そのノードへのPod配置を防ぐこともできます(`VolumeLimitScaling`フィーチャーゲートの有効化が必要です)。
  また、アタッチ可能なCSIボリュームを持つスケジュール待ちPodのために必要なノード数を、cluster-autoscalerが正確に算出できるようにします。
  拡張点: `filter`
- `EBSLimits`: AWSのEBSボリューム制限がノードに対して満たされるかをチェックします。
  拡張点: `filter`
- `GCEPDLimits`: GCP-PDボリューム制限がノードに対して満たされるかをチェックします。
  拡張点: `filter`
- `AzureDiskLimits`: Azure Diskボリューム制限がノードに対して満たされるかをチェックします
  拡張点: `filter`
- `InterPodAffinity`: [Pod間のアフィニティとアンチアフィニティ](/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity)を実装します。
  拡張点: `preFilter`、`filter`、`preScore`、`score`
- `PrioritySort`: デフォルトの優先順位に基づくソートを提供します。
  拡張点: `queueSort`.
- `DefaultBinder`: デフォルトのバインディングメカニズムを提供します。
  拡張点: `bind`
- `DefaultPreemption`: デフォルトのプリエンプションメカニズムを提供します。
  拡張点: `postFilter`

また、コンポーネント設定のAPIにより、以下のプラグインを有効にすることができます。
デフォルトでは有効になっていません。

- `CinderLimits`: ノードが[OpenStack Cinder](https://docs.openstack.org/cinder/)ボリューム制限を満たせるかチェックします。
  拡張点: `filter`

### 複数のプロファイル {#multiple-profiles}

`kube-scheduler`は複数のプロファイルを実行するように設定することができます。
各プロファイルは関連するスケジューラー名を持ち、その[拡張点](#extension-points)に異なるプラグインを設定することが可能です。

以下のサンプル設定では、スケジューラーは2つのプロファイルで実行されます。
1つはデフォルトプラグインで、もう1つはすべてのスコアリングプラグインを無効にしたものです。

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

特定のプロファイルに従ってスケジュールさせたいPodは、Podの`.spec.schedulerName`に、対応するスケジューラー名を含めることができます。

デフォルトでは、スケジューラー名`default-scheduler`を持つ1つのプロファイルが生成されます。
このプロファイルは、上記のデフォルトプラグインを含みます。
複数のプロファイルを宣言する場合は、それぞれユニークなスケジューラー名にする必要があります。

もしPodがスケジューラー名を指定しない場合、kube-apiserverは`default-scheduler`を設定します。
従って、これらのPodをスケジュールするために、このスケジューラー名を持つプロファイルが存在する必要があります。


<div class="alert alert-info" role="note"><h4 class="alert-heading">備考:</h4><p>Podのスケジューリングイベントには、<code>ReportingController</code>として<code>.spec.schedulerName</code>が設定されています。
リーダー選出のイベントには、リスト先頭のプロファイルのスケジューラー名が使用されます。</p>
<p>さらなる情報は、<a href="/docs/reference/kubernetes-api/cluster-resources/event-v1/">Event APIリファレンス</a>の<code>reportingController</code>項目をご参照ください。</p>
</div>



<div class="alert alert-info" role="note"><h4 class="alert-heading">備考:</h4>すべてのプロファイルは、<code>queueSort</code>拡張点で同じプラグインを使用し、同じ設定パラメーターを持つ必要があります(該当する場合)。
これは、pending状態のPodキューがスケジューラーに1つしかないためです。</div>


### 複数の拡張点に適用されるプラグイン {#multipoint}

`kubescheduler.config.k8s.io/v1beta3`からは、プロファイル設定に`multiPoint`というフィールドが追加され、複数の拡張点でプラグインを簡単に有効・無効化できるようになりました。
`multiPoint`設定の目的は、カスタムプロファイルを使用する際に、ユーザーや管理者が必要とする設定を簡素化することです。

`MyPlugin`というプラグインがあり、`preScore`、`score`、`preFilter`、`filter`拡張点を実装しているとします。
すべての利用可能な拡張点で`MyPlugin`を有効化するためには、プロファイル設定は次のようにします。

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

これは以下のように、`MyPlugin`を手動ですべての拡張点に対して有効にすることと同じです。

```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
```

`multiPoint`を使用する利点の一つは、将来的に`MyPlugin`が別の拡張点を実装した場合に、`multiPoint`設定が自動的に新しい拡張点に対しても有効化されることです。

特定の拡張点は、その拡張点の`disabled`フィールドを使用して、`MultiPoint`の展開から除外することができます。
これは、デフォルトのプラグインを無効にしたり、デフォルト以外のプラグインを無効にしたり、ワイルドカード(`'*'`)を使ってすべてのプラグインを無効にしたりする場合に有効です。
`Score`と`PreScore`を無効にするためには、次の例のようにします。

```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: '*'
```

`v1beta3`からは、`MultiPoint`を通じて、内部的に全ての[デフォルトプラグイン](#scheduling-plugins)が有効化されています。
しかしながら、デフォルト値(並び順やスコアの重みなど)を柔軟に設定し直せるように、個別の拡張点は用意されています。
例えば、2つのスコアプラグイン`DefaultScore1`と`DefaultScore2`に、重み1が設定されているとします。
その場合、次のように重さを変更し、並べ替えることができます。

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

この例では、`MultiPoint`はデフォルトプラグインであるため、明示的にプラグイン名を指定する必要はありません。
そして、`Score`に指定されているプラグインは`DefaultScore2`のみです。
これは、特定の拡張点を通じて設定されたプラグインは、常に`MultiPoint`プラグインよりも優先されるためです。
つまり、この設定例では、結果的に2つのプラグインを両方指定することなく、並び替えが行えます。

`MultiPoint`プラグインを設定する際の一般的な優先順位は、以下の通りです。
1. 特定の拡張点が最初に実行され、その設定は他の場所で設定されたものよりも優先される
2. `MultiPoint`を使用して、手動で設定したプラグインとその設定内容
3. デフォルトプラグインとそのデフォルト設定

上記の優先順位を示すために、次の例はこれらのプラグインをベースにします。

|プラグイン|拡張点|
|---|---|
|`DefaultQueueSort`|`QueueSort`|
|`CustomQueueSort`|`QueueSort`|
|`DefaultPlugin1`|`Score`, `Filter`|
|`DefaultPlugin2`|`Score`|
|`CustomPlugin1`|`Score`, `Filter`|
| プラグイン         | 拡張点            |
| ------------------ | ----------------- |
| `DefaultQueueSort` | `QueueSort`       |
| `CustomQueueSort`  | `QueueSort`       |
| `DefaultPlugin1`   | `Score`、`Filter` |
| `DefaultPlugin2`   | `Score`           |
| `CustomPlugin1`    | `Score`、`Filter` |
| `CustomPlugin2`    | `Score`、`Filter` |

これらのプラグインの有効な設定例は次の通りです。

```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'
```

なお、特定の拡張点に`MultiPoint`プラグインを再宣言しても、エラーにはなりません。
特定の拡張点が優先されるため、再宣言は無視されます(ログは記録されます)。

このサンプルは、ほとんどの設定を一箇所にまとめるだけでなく、いくつかの工夫をしています。
* カスタムの`queueSort`プラグインを有効にし、デフォルトのプラグインを無効にする。
* `CustomPlugin1`と`CustomPlugin2`を有効にし、この拡張点のプラグイン内で、最初に実行されるようにする。
* `filter`拡張点でのみ、`DefaultPlugin1`を無効にする。
* `score`拡張点で`DefaultPlugin2`が最初に実行されるように並べ替える(カスタムプラグインより先に)。

`v1beta3`以前のバージョンで、`multiPoint`がない場合、上記の設定例は、次のものと同等になります。

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

      # デフォルトQueueSortプラグインを無効化
      queueSort:
        enabled:
        - name: 'CustomQueueSort'
        disabled:
        - name: 'DefaultQueueSort'

      # カスタムFilterプラグインを有効化
      filter:
        enabled:
        - name: 'CustomPlugin1'
        - name: 'CustomPlugin2'
        - name: 'DefaultPlugin2'
        disabled:
        - name: 'DefaultPlugin1'

      # カスタムScoreプラグインを有効化し、実行順を並べ替える
      score:
        enabled:
        - name: 'DefaultPlugin2'
          weight: 1
        - name: 'DefaultPlugin1'
          weight: 3
```

これは複雑な例ですが、`MultiPoint`設定の柔軟性と、拡張点を設定する既存の方法とのシームレスな統合を実証しています。

## スケジューラー設定の移行

<ul class="nav nav-tabs" id="tabs-tab-with-md" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-tab-with-md-0" role="tab" aria-controls="tabs-tab-with-md-0" aria-selected="true">v1beta1 → v1beta2</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-tab-with-md-1" role="tab" aria-controls="tabs-tab-with-md-1">v1beta2 → v1beta3</a></li>
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-tab-with-md-2" role="tab" aria-controls="tabs-tab-with-md-2">v1beta3 → v1</a></li></ul>

<div class="tab-content" id="tabs-tab-with-md-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-tab-with-md-0" role="tabpanel" aria-labelledby="tabs-tab-with-md-0-tab" tabindex="tab-with-md"><ul>
<li>
<p>v1beta2のバージョンの設定では、新しい<code>NodeResourcesFit</code>プラグインをスコア拡張点で使用できます。
この新しい拡張機能は、<code>NodeResourcesLeastAllocated</code>、<code>NodeResourcesMostAllocated</code>、 <code>RequestedToCapacityRatio</code>プラグインの機能を組み合わせたものです。
例えば、以前まで<code>NodeResourcesMostAllocated</code>プラグインを使っていたなら、代わりに<code>NodeResourcesFit</code>プラグインを使用し(デフォルトで有効)、<code>pluginConfig</code>に次のような<code>scoreStrategy</code>を追加することになるでしょう。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">kubescheduler.config.k8s.io/v1beta2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">KubeSchedulerConfiguration</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">profiles</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl">- <span class="nt">pluginConfig</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">args</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">scoringStrategy</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">resources</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">cpu</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">weight</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">MostAllocated</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">NodeResourcesFit</span><span class="w">
</span></span></span></code></pre></div></li>
<li>
<p>スケジューラープラグインの<code>NodeLabel</code>は廃止されました。
代わりに<a href="/ja/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity"><code>NodeAffinity</code></a>プラグイン(デフォルトで有効)を使用することで同様の振る舞いを実現できます。</p>
</li>
<li>
<p>スケジューラープラグインの<code>ServiceAffinity</code>は廃止されました。
代わりに<a href="/ja/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity"><code>InterPodAffinity</code></a>プラグイン(デフォルトで有効)を使用することで同様の振る舞いを実現できます。</p>
</li>
<li>
<p>スケジューラープラグインの<code>NodePreferAvoidPods</code>は廃止されました。
代わりに<a href="/ja/docs/concepts/scheduling-eviction/taint-and-toleration/">ノードのTaint</a>を使用することで同様の振る舞いを実現できます。</p>
</li>
<li>
<p>v1beta2で有効化されたプラグインは、そのプラグインのデフォルトの設定より優先されます。</p>
</li>
<li>
<p>スケジューラーのヘルスとメトリクスのバインドアドレスに設定されている<code>host</code>や<code>port</code>が無効な場合、バリデーションに失敗します。</p>
</li>
</ul>
</div><div class="tab-body tab-pane fade"
        id="tabs-tab-with-md-1" role="tabpanel" aria-labelledby="tabs-tab-with-md-1-tab" tabindex="tab-with-md"><ul>
<li>デフォルトで3つのプラグインの重みが増加しました。
<ul>
<li><code>InterPodAffinity</code>:1から2</li>
<li><code>NodeAffinity</code>:1から2</li>
<li><code>TaintToleration</code>:1から3</li>
</ul>
</li>
</ul>
</div><div class="tab-body tab-pane fade"
        id="tabs-tab-with-md-2" role="tabpanel" aria-labelledby="tabs-tab-with-md-2-tab" tabindex="tab-with-md"><ul>
<li>スケジューラープラグインの<code>SelectorSpread</code>は廃止されました。
代わりに<code>PodTopologySpread</code>プラグイン(デフォルトで有効)を使用することで同様の振る舞いを実現できます。</li>
</ul>
</div></div>


## 次の項目

* [kube-schedulerリファレンス](/docs/reference/command-line-tools-reference/kube-scheduler/)を読む
* [スケジューリング](/docs/concepts/scheduling-eviction/kube-scheduler/)について学ぶ
* [kube-scheduler設定(v1)](/docs/reference/config-api/kube-scheduler-config.v1/)のリファレンスを読む
