まず、KubernetesのNode Affinity(ノード・アフィニティ)は、Podが特定のノードへのスケジューリングを制御するための設定です。
このrequiredDuringSchedulingIgnoredDuringExecution
は、「スケジューリング時に必須、実行時に無視」という意味で、Podが作成されるときにはノードのラベルを厳密にチェックしますが、Podが実行されている間にはノードのラベルを無視します。
requiredDuringSchedulingIgnoredDuringExecution
は、その中でも1つのルールタイプで、以下の意味を持っています。
- requiredDuringScheduling: このルールが指定されている場合、Podは条件に一致するノード上でのみスケジュールされる。もし一致するノードが存在しない場合、Podはスケジュールされない。
- IgnoredDuringExecution: 一度スケジュールされたPodは、条件に違反しても強制的に移動させられることはない。ただし、ノードの状態が変わり、条件に一致しなくなった場合や、ノードが故障した場合はそのPodは再スケジュールされる。
このrequiredDuringSchedulingIgnoredDuringExecution
ルールタイプは、Podが特定の条件を満たすノードでのみ実行されることを保証するために使用されますが、一度スケジュールされると、その条件が変わっても強制的に移動させられることはありません。
例えば、特定のハードウェア要件やリージョン内のノードにPodをスケジュールすることを保証したい場合にこのオプションを利用します。