harukin721

主に学習記録

Node Affinity と Node Selector

Kubernetesクラスターを構成するNodeは常に均一とは限らず、Nodeによって性能等が異なっていることがある。特定Nodeに対してPodを起動させたい時は Node Selector  Node Affinity を使うことができる。

Node Selector

Node Selectorは単純にNodeにラベルを設定して、Podのspec内でそのラベルを使用することで、特定のNodeにPodを配置することができる。

しかし、2つ以上の条件をすべて満たすといった柔軟な条件指定ができないという制約がある。

Node Affinity

Node AffinityはNode Selectorよりも柔軟にNodeを選択することができる。複雑なNode選択基準を設定する必要がある場合に使用する。特定のゾーンに属するNodeを指定したい時など。

Node Affinityは`requiredDuringSchedulingIgnoredDuringExecution`と`preferredDuringSchedulingIgnoredDuringExecution` の2種類の設定が可能。

requiredDuringSchedulingIgnoredDuringExecution

設定された条件を満たすことが必須。条件を満たすNodeが存在しない場合は、Podはスケジュールされない。

preferredDuringSchedulingIgnoredDuringExecution

設定された条件が優先されるだけで必須ではない。条件を満たすNodeが存在しない場合でも、Podは他のNodeにスケジュールされる。

※ requiredDuringSchedulingIgnoredDuringExecution と preferredDuringSchedulingIgnoredDuringExecution が同時に設定された場合は両方を満たすNodeに配置される。

kubernetes.io