Taint と Toleration
Kubernetes の仕組み。ノードに付けた taint は、対応する toleration を持たない Pod をすべて拒否する。Pod がノードを選ぶ node affinity とは逆で、ノード側から Pod を断る方法である。
効果は三種類ある。NoSchedule(新規 Pod を拒否)、PreferNoSchedule(なるべく避ける)、NoExecute(既存の Pod も追い出す)だ。典型例はコントロールプレーンのノードで、node-role.kubernetes.io/control-plane:NoSchedule の taint により、toleration を持つシステムコンポーネントだけが動く。GPU ノードに GPU 用の taint を付ければ、事情をわかっている ML 用 Pod だけが乗る。クラウドのオートスケーラーでは、スポットインスタンスに taint を付けて耐障害性のあるワークロードだけを載せる使い方もある。Karpenter はワークロード専用ノードに taint を多用する。クラスターを分けずにリソースを分離できる、手軽な方法だ。