KubernetesでPodアンチアフィニティについて誤解していたのでメモを残しておきます。
この記事は Kubernetes 1.18 について書いているので、将来的には変わる可能性があります。
デプロイメントAのマニフェストにPodアンチアフィニティでデプロイメントBのポッドと同じノードにスケジューリングされないように requiredDuringSchedulingIgnoredDuringExecution
を設定したところ、Bのポッドがスケジューリングされる時にAのポッドがあるノードに配置されてしまいました。
IgnoredDuringExecution
とある通り、既に実行されているAのポッドに対してはPodアンチアフィニティは適用されませんでした。
A, Bのポッドが同じノードにスケジューリングされないようにするには、今のところA, B両方のマニフェストにPodアンチアフィニティの設定を記述する必要があります。
将来的に requiredDuringSchedulingRequiredDuringExecution
が提供されて、条件を満たさなくなったらノードから退避することもできるようになるらしいです。
「Podアンチアフィニティで除外したPodがノードにスケジューリングされる」への1件のフィードバック