【ポッドトポロジーぶんさん】
Podトポロジー分散 とは?
最終更新:
💡 新しい卵を置くカゴの偏りを抑えるルール
Podトポロジー分散は、Kubernetesで新しいPodをゾーンやノードへ偏りにくく配置する制約です。maxSkewの正しい範囲と、配置できない場合の動作を説明します。
📌 このページのポイント
Podを同じゾーンに固めたくないときは?
topologySpreadConstraintsで、新しいPodをゾーンやノードに分散させるルールを指定できるよ。スケジューラには既定の分散の優先設定もあるけれど、配置先は空き容量やほかの条件にも影響される。必要な分散の条件は明示して考えよう。
どのゾーンの、どのPodを数えるの?
maxSkew=0なら完全に同じ数になる?
0は設定できず、1以上の整数が必要だよ。DoNotScheduleの場合は、配置先の対象Pod数と、配置可能な範囲での最少数(global minimum)との差を制限する。図は3ゾーンに3・4・3個の例で、maxSkew=1ならAへ1個追加する候補は差1、Bへ追加する候補は差2になるんだ。
ルールに収まらないとどうなる?
ゾーンとノード両方を分散できる?
複数の制約を書けるよ。DoNotScheduleの条件はすべて満たす必要があり、ScheduleAnywayの条件は偏りを減らす優先度の評価に使う。ノードのラベル不足にも注意しよう。さらに、minDomainsで必要な範囲数を指定した場合、利用できる範囲が足りないとglobal minimumを0として扱うので、単なるゾーン間の最大差だけで判断できないんだ。
動いているPodも自動で並べ直す?
まとめ:ざっくりこれだけ覚えればOK!
「Podトポロジー分散」って出てきたら「新しい卵を置くカゴの偏りを抑えるルール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Pod Topology Spread Constraints」 = Podトポロジー分散制約
💬 Topologyはゾーンやノードなどの配置構造、Spreadは分散、Constraintsは制約という意味だよ。新しいPodをどこへ置くか、既存の対象Podの偏りも見て判断するんだ。