3.10.2. Descheduler ストラテジー
以下の Descheduler ストラテジーを利用できます。
- ノードの低い使用率
LowNodeUtilization
ストラテジーは、使用率の低いノードを検出し、可能な場合は他のノードから Pod をエビクトし、エビクトされた Pod の再作成がそれらの使用率の低いノードでスケジュールされるようにします。ノードの使用率の低さは、CPU、メモリーおよび Pod 数のいくつかの設定可能なしきい値パラメーターによって判別されます。ノードの使用率がすべてのパラメーター (CPU、メモリー、Pod の数) の設定済みのしきい値を下回る場合、ノードの使用率は低いとみなされます。
また、CPU、メモリー、Pod 数のターゲットしきい値を設定することもできます。ノードの使用量がいずれかのパラメーターに設定されたターゲットしきい値を上回る場合、ノードの Pod はエビクションについて考慮される可能性があります。
さらに、
NumberOfNodes
パラメーターを使用して、使用率の低いノードの数が設定された値を上回る場合にのみストラテジーをアクティブにするために設定できます。これは、いくつかのノードの使用率が頻繁に低くなったり、短期間低くなる可能性のある大規模なクラスターの場合に役立ちます。- 重複 Pod
RemoveDuplicates
ストラテジーでは、1 つの Pod のみが同じノードで実行されているレプリカセット、 レプリケーションコントローラー、デプロイメントまたはジョブに関連付けられます。追加の Pod がある場合、それらの重複 Pod はクラスターに Pod を効果的に分散できるようにエビクトされます。この状態は、Pod が別のノードに移動し、複数の Pod がそのノード上のレプリカセット、レプリケーションコントローラー、デプロイメント、またはジョブに関連付けられる際に生じる可能性があります。失敗したノードが再び準備可能になると、このストラテジーが重複 Pod をエビクトします。
このストラテジーには、
Kind
タイプの一覧を指定できるオプションのパラメーターExcludeOwnerKinds
があります。Pod でこれらのタイプのいずれかがOwnerRef
として一覧表示される場合、Pod はエビクション対象として考慮されません。- Pod 間の非アフィニティーの違反
RemovePodsViolatingInterPodAntiAffinity
ストラテジーは、Pod 間の非アフィニティー (inter-pod anti-affinity) に違反する Pod がノードから削除されるようにします。この状態は、同じノードですでに実行中の Pod に非アフィニティールールが作成されると発生する可能性があります。
- ノードアフィニティーの違反
RemovePodsViolatingNodeAffinity
ストラテジーにより、ノードアフィニティーを違反する Pod がノードから削除されるようにします。この状態は、ノードが Pod のアフィニティールールを満たさなくなる場合に生じる可能性があります。アフィニティールールを満たす別のノードが利用可能な場合、Pod はエビクトされます。
- ノードテイントの違反
RemovePodsViolatingNodeTaints
ストラテジーは、ノード上のNoSchedule
テイントを違反する Pod が削除されるようにします。これは、Pod がテイント
key=value:NoSchedule
を容認し、テイントされたノードで実行されている場合に生じる可能性があります。ノードのテイントが更新されるか、または削除される場合、テイントは Pod の容認によって満たされなくなり、Pod はエビクトされます。- 再起動の回数が多すぎる
RemovePodsHavingTooManyRestarts
ストラテジーは、再起動した回数が多すぎる Pod がノードから削除されるようにします。この状態は、Pod がこれを起動できないノードにスケジュールされている場合に生じる可能性があります。たとえば、ノードにネットワークの問題があり、ネットワーク化された永続ボリュームをマウントできない場合、Pod は別のノードでスケジュールされるようにエビクトされる必要があります。もう 1 つの例は、Pod がクラッシュループしている場合です。
このストラテジーには、
PodRestartThreshold
およびIncludingInitContainers
の 2 つの設定可能なパラメーターがあります。Pod が設定されたPodRestartThreshold
値を超えて再起動される場合、Pod はエビクトされます。IncludingInitContainers
パラメーターを使用して、Init コンテナーの再起動がPodRestartThreshold
値に計算されるかどうかを指定できます。- Pod の有効期間
PodLifeTime
ストラテジーは、古くなり過ぎた Pod をエビクトします。Pod が
MaxPodLifeTimeSeconds
パラメーターで設定される秒単位の経過時間に達すると、エビクトされます。