2.3.3.2. 正常でない Pod の退避ポリシーの指定
Pod Disruption Budget (PDB) を使用して、同時に使用可能にする必要がある Pod の数を指定する場合、異常な Pod を退避対象として考慮する基準も定義できます。
以下のポリシーから選択できます。
- IfHealthyBudget
- 正常ではない実行中の Pod は、保護されたアプリケーションが停止されない場合に限り退避できます。
- AlwaysAllow
まだ正常ではない実行中の Pod は、Pod Disruption Budget の基準が満たされているかどうかに関係なく退避される可能性があります。このポリシーは、Pod が
CrashLoopBackOff状態でスタックしているアプリケーションやReadyステータスの報告に失敗しているアプリケーションなど、正常に動作しないアプリケーションを退避するために使用できます。注記ノードの drain (Pod の退避) を実行中に誤動作するアプリケーションの退避をサポートするには、
PodDisruptionBudgetオブジェクトのunhealthyPodEvictionPolicyフィールドをAlwaysAllowに設定することを推奨します。デフォルトの動作では、drain (Pod の退避) の実行を続行する前に、アプリケーション 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
AlwaysAllow の異常な Pod 退避ポリシーが設定された PDB がある場合、その PDB によって保護されている、機能不全に陥ったアプリケーションの Pod を退避させつつ、ノードの drain (Pod の退避) を実行できるようになりました。