【ポッドディスラプションバジェット】
Pod Disruption Budget(PDB) とは?
最終更新:
💡 メンテナンスでPodを退去させすぎないためのルール
Kubernetesで、Eviction APIを通じた自発的なPod退去を制限するリソース。対象Podの最低利用可能数か最大利用不能数を指定する。ノード障害や直接のPod削除を防ぎ、稼働数を常に保証するものではない。
📌 このページのポイント
- minAvailableかmaxUnavailableのどちらか一方で退去の許容範囲を指定する
- 通常のkubectl drainはEviction APIを使い、PDBに反する退去を待つ
- ノード障害などの非自発的な停止は防げないが、退去の余裕の計算には含まれる
- Deploymentのローリング更新はPDBではなく更新戦略で制御する
ルールって、どうやって設定するの?
例えば対象の5つがすべて利用可能なら、minAvailable: 3では退去の余裕は2つ。maxUnavailable: 1なら利用不能なPodを1つまでに制限する設定だよ。この2つは同じPDBには両方書けないんだ。
じゃあPDBを設定しておけば、drain中でもサービスが止まらないってこと?
ローリングアップデートとは別の話なの?
別に制御するよ。Deploymentのローリング更新はmaxSurgeやmaxUnavailableなどの更新戦略に従い、PDBでは制限されない。ただし更新で利用不能になったPodは、PDBの退去の余裕にも影響するんだ。
最低限の本数を考えて、工事で止めすぎないようにする感じだね!
そのイメージだね。ただ、突然の故障まで止められるわけではない。必要なレプリカ数や配置、利用可能と判断する条件を整えたうえで、計画的な退去を制限する仕組みなんだ。
もっと詳しく知りたい人へ
minAvailableをレプリカ数と同じにするとどうなる?
すべてのPodが利用可能でも退去の余裕がなく、通常のdrainが進まなくなる。最低必要数を満たしたまま退去できるレプリカ数と配置を用意する必要がある。割合指定では切り上げもあるため、少数のPodでは実際に何個を退去できるか確認する。
まとめ:ざっくりこれだけ覚えればOK!
「PDB」って出てきたら「メンテナンス時のPod退去を制限するルール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Pod Disruption Budget」 = Podの中断の許容枠
💬 Disruptionは中断、Budgetは許容できる枠のこと。Podの自発的な退去にどれだけ余裕を認めるかを表す名前だよ。