Node SelectorやNode Affinityと同じく、特定のNodeにPodをscheduleする仕組み。
直訳するとTaintsは「汚れ」、Tolerationsは「許容」でいまいち意味わからない。
簡単に言うと汚れ(Taints)をどこまで許容(Tolerations)できるかを定義する。
Node SelectorやNode AffinityはPodをscheduleしたいNodeの設定を行なうが、TaintsとTolerationsはPodをscheduleしたくないNodeを設定する。
TaintsはNodeに設定し、TolerationsはPodに設定する。
本番用のNodeに他のPodをscheduleさせたくない時などに有効。
TaintsはKey=Value:Effect
のように、3種類のパラメータで構成されている。
付与されたTaintsを確認するにはkubectl describe node <Node>
を使用する。
EffectはTaintsとTolerationsがマッチしない際の挙動を定義している。
TolerationsはKey/Value/Effectを指定して、Taintsで付与されたKey/Value/Effectと一致した場合許容する。
完全一致だけでなく、Tolerationsの一部を未指定にすることでワイルドカードとして扱うこともできる。
Tolerationsを指定したPodの例
オペレータは以下の2種類から選択可能。
Nodeに以下のような問題が発生した場合に、対応するTaintsが自動で付与される。