Descheduler(デスケジューラ)
不適切な場所に居座ったPodを追い出すコンポーネント。Kubernetesのスケジューラは配置を一度決めたら二度と見直さないためである。
Podをどのノードに置くかは、その瞬間のクラスタの状態で決まる。ところがその後、ノードは増減し、ほかのPodは出入りし、ラベルやアフィニティのルールも書き換えられる。数週間もすれば負荷は偏り、起動時には満たしていた規則に反するPodも出てくる。Deschedulerは定期的に動き、選んだ戦略に従ってPodを退避させる。同じDeploymentの複製が1ノードに固まっている場合、使用率が極端に低いノード上のPod、ノードアフィニティを満たさなくなったPodなどが対象だ。
決めるのは「何を追い出すか」だけで、行き先は通常のスケジューラが決める。このため設定を誤ると、両者がPodを行ったり来たりさせることもある。Disruption Budgetは尊重される。