4.13.3. 正常でない Pod のエビクションポリシーの指定
Pod Disruption Budget (PDB) を使用して、同時に使用可能にする必要がある Pod の数を指定する場合、異常な Pod をエビクション対象として考慮する基準も定義できます。
以下のポリシーから選択できます。
- IfHealthyBudget
- 正常ではない実行中の Pod は、保護されたアプリケーションが停止されない場合に限り退避できます。
- AlwaysAllow
まだ正常ではない実行中の Pod は、Pod Disruption Budget の基準が満たされているかどうかに関係なく削除される可能性があります。このポリシーは、Pod が
CrashLoopBackOff状態でスタックしているアプリケーションやReadyステータスの報告に失敗しているアプリケーションなど、正常に動作しないアプリケーションを退避するために使用できます。注記ノードドレイン中に誤動作するアプリケーションのエビクションをサポートするには、
PodDisruptionBudgetオブジェクトのunhealthyPodEvictionPolicyフィールドをAlwaysAllowに設定することを推奨します。デフォルトの動作では、ドレインを続行する前に、アプリケーション Pod が正常になるまで待機します。
手順
PodDisruptionBudgetオブジェクトを定義する YAML ファイルを作成し、正常でない Pod のエビクションポリシーを指定します。pod-disruption-budget.yamlファイルの例apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: my-pdb spec: minAvailable: 2 selector: matchLabels: name: my-pod unhealthyPodEvictionPolicy: AlwaysAllow1 - 1
- 正常でない Pod エビクションポリシーとして
IfHealthyBudgetまたはAlwaysAllowのいずれかを選択します。unhealthyPodEvictionPolicyフィールドが空の場合、デフォルトはIfHealthyBudgetです。
以下のコマンドを実行して
PodDisruptionBudgetオブジェクトを作成します。$ oc create -f pod-disruption-budget.yaml
PDB で正常でない Pod のエビクションポリシーが AlwaysAllow に設定されている場合、ノードをドレイン (解放)、この PDB が保護する正常に動作しないアプリケーションの Pod を退避できます。