Podアンチアフィニティで除外したPodがノードにスケジューリングされる

KubernetesでPodアンチアフィニティについて誤解していたのでメモを残しておきます。
この記事は Kubernetes 1.18 について書いているので、将来的には変わる可能性があります。

デプロイメントAのマニフェストにPodアンチアフィニティでデプロイメントBのポッドと同じノードにスケジューリングされないように requiredDuringSchedulingIgnoredDuringExecution を設定したところ、Bのポッドがスケジューリングされる時にAのポッドがあるノードに配置されてしまいました。

IgnoredDuringExecution とある通り、既に実行されているAのポッドに対してはPodアンチアフィニティは適用されませんでした。

A, Bのポッドが同じノードにスケジューリングされないようにするには、今のところA, B両方のマニフェストにPodアンチアフィニティの設定を記述する必要があります。

将来的に requiredDuringSchedulingRequiredDuringExecution が提供されて、条件を満たさなくなったらノードから退避することもできるようになるらしいです。

参考

「Podアンチアフィニティで除外したPodがノードにスケジューリングされる」への1件のフィードバック

コメントする