Podアフィニティ/アンチアフィニティ
Podを他のPodとの相対関係で配置するためのルール。アフィニティは同じノードやゾーンに引き寄せ(例:低遅延のためアプリをキャッシュの近くに置く)、アンチアフィニティは引き離す(例:1台のノード障害で全滅しないようレプリカをノードに分散させる)。
仕組みは、他のPodのラベルと、「近い」「離れている」の単位を決める「トポロジーキー」(ノード、ゾーン、リージョン)で照合する。強さは2種類ある。required(ハード。ルールを満たせなければスケジュールされない)とpreferred(ソフト。努力はするが、満たせなくても配置する)だ。定番の用途は、同じサービスの2つのレプリカを同じノードに置かないアンチアフィニティ(ノード障害でサービス全体が落ちるのを防ぐ)と、密に通信するサービスを同居させるアフィニティ。ノードの性質に基づいて配置するノードアフィニティや、より新しく均等に分散させるトポロジー分散制約とは別物だ。強力だが、ルールを厳しくしすぎるとスケジューリングが成立しなくなることがある。ノードアフィニティやトポロジー分散制約と関連する。