第3章 PodDisruptionBudget [policy/v1]
- 説明
- PodDisruptionBudget は、Pod のコレクションに発生する可能性のある最大の中断を定義するオブジェクトです。
- タイプ
-
object
3.1. 仕様
プロパティー | タイプ | 説明 |
---|---|---|
|
| APIVersion はオブジェクトのこの表現のバージョンスキーマを定義します。サーバーは認識されたスキーマを最新の内部値に変換し、認識されない値は拒否することがあります。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources を参照してください。 |
|
| kind はこのオブジェクトが表す REST リソースを表す文字列の値です。サーバーはクライアントが要求を送信するエンドポイントからこれを推測できることがあります。これを更新することはできません。CamelCase を使用します。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds を参照してください。 |
| 標準オブジェクトのメタデータ。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata を参照してください。 | |
|
| PodDisruptionBudgetSpec は、PodDisruptionBudget の説明です。 |
|
| PodDisruptionBudgetStatus は、PodDisruptionBudget のステータスに関する情報を表します。ステータスは、システムの実際の状態を追跡する場合があります。 |
3.1.1. .spec
- 説明
- PodDisruptionBudgetSpec は、PodDisruptionBudget の説明です。
- タイプ
-
object
プロパティー | タイプ | 説明 |
---|---|---|
| "セレクター" によって選択された最大で "maxUnavailable" が、削除後に使用できなくなった場合、つまり、削除された Pod がない場合でも、削除が許可されます。たとえば、0 を指定することで、すべての自発的な立ち退きを防ぐことができます。これは、"minAvailable" との相互に排他的な設定です。 | |
| "セレクター" によって選択された少なくとも "minAvailable" Pod が、削除後も、つまり、削除された Pod がない場合でも使用できる場合は、削除が許可されます。したがって、たとえば、"100%" を指定することで、すべての自発的な立ち退きを防ぐことができます。 | |
| 立ち退きが混乱予算によって管理されている Pod に対するラベルクエリー。null セレクターは Pod に一致しませんが、空 ({}) セレクターは名前空間内のすべての Pod を選択します。 | |
|
| UnhealthyPodEvictionPolicy は、異常な Pod のエビクションを考慮する必要がある場合の基準を定義します。現在の実装では、type="Ready",status="True" の status.conditions 項目を持つ Pod が正常な Pod とみなされます。 有効なポリシーは IfHealthyBudget および AlwaysAllow です。ポリシーを指定しないと、IfHealthyBudget ポリシーに対応するデフォルトの動作が使用されます。 IfHealthyBudget ポリシーは、実行中 (status.phase="Running") であってもまだ正常ではない Pod は、保護されたアプリケーションが中断されていない場合にのみ退避できることを意味します (status.currentHealthy は少なくとも status.desiredHealthy と同等とする)。正常な Pod はエビクションの PDB の対象になります。 AlwaysAllow ポリシーは、実行中 (status.phase="Running") ではあるがまだ正常ではない Pod がすべて中断されているとみなされ、PDB の基準が満たされているかどうかに関係なく削除できることを意味します。つまり、中断されたアプリケーションの Pod を実行しているパースペクティブが正常になる機会を得られない可能性があります。正常な Pod はエビクションの PDB の対象になります。 今後、追加のポリシーが追加される可能性があります。エビクションの決定を行うクライアントは、このフィールドで認識されていないポリシーがあった場合は、異常な Pod のエビクションを禁止する必要があります。 このフィールドは、ベータレベルですエビクション API は、PDBUnhealthyPodEvictionPolicy のフィーチャーゲートが有効になっている場合 (デフォルトで有効になっている場合)、このフィールドを使用します。
使用可能な列挙値: - |
3.1.2. .status
- 説明
- PodDisruptionBudgetStatus は、PodDisruptionBudget のステータスに関する情報を表します。ステータスは、システムの実際の状態を追跡する場合があります。
- タイプ
-
object
- 必須
-
disruptionsAllowed
-
currentHealthy
-
desiredHealthy
-
expectedPods
-
プロパティー | タイプ | 説明 |
---|---|---|
| 条件には、PDB の条件が含まれています。中断コントローラーは、DisruptionAllowed 条件を設定します。理由フィールドの既知の値は次のとおりです (将来、追加の理由が追加される可能性があります)。-SyncFailed: コントローラーでエラーが発生し、許可された中断の数を計算できませんでした。したがって、中断は許可されず、状態のステータスは False になります。--InsufficientPods:Pod の数は、PodDisruptionBudget で必要な数以下です。中断は許可されず、状態のステータスは False になります。--SufficientPods:PodDisruptionBudget で必要とされるよりも多くの Pod があります。条件は True になり、許可される中断の数は、disruptionsAllowed プロパティーによって提供されます。 | |
|
| 健康な Pod の現在の数 |
|
| 正常な Pod の最小希望数 |
| DisruptedPods には、API サーバーのエビクションサブリソースハンドラーによってエビクションが処理されたが、PodDisruptionBudget コントローラーによってまだ監視されていない Pod に関する情報が含まれています。Pod は、API サーバーが削除要求を処理してから、PDB コントローラーによって削除のマークが付けられた (またはタイムアウト後) と見なされるまで、このマップに含まれます。マップのキーは Pod の名前であり、値は API サーバーがエビクションリクエストを処理した時刻です。削除が行われず、Pod がまだ存在する場合は、しばらくすると PodDisruptionBudget コントローラーによって自動的にリストから削除されます。すべてが順調に進んだ場合、このマップはほとんどの時間空になっているはずです。マップ内のエントリーの数が多い場合は、Pod の削除に問題があることを示している可能性があります。 | |
|
| 現在許可されている Pod の中断の数。 |
|
| この混乱の予算によってカウントされた Pod の総数 |
|
| この PDB ステータスを更新するときに観察された最新の世代。DisruptionsAllowed およびその他のステータス情報は、observedGeneration が PDB のオブジェクト生成と等しい場合にのみ有効です。 |