PDB による削除エラーによる UpgradeFailed エラーのトラブルシューティング
この記事では、Azure Kubernetes Service (AKS) クラスターをアップグレードしようとしたときに発生するポッド中断予算 (PDB) による削除エラーによる UpgradeFailed エラーを特定して解決する方法について説明します。
前提条件
この記事では、Azure CLI バージョン 2.0.65 以降のバージョンが必要です。 バージョン番号を見つけるには、 az --version
を実行します。 Azure CLI をインストールまたはアップグレードする必要がある場合は、「 Azure CLI のインストール方法を参照してください。
アップグレード プロセスの詳細については、「 Azure Kubernetes Service (AKS) クラスターをアップグレードする」の「AKS クラスターのアップグレード」セクションを参照してください。
現象
AKS クラスターのアップグレード操作が失敗し、次のエラー メッセージが表示されます。
コード: UpgradeFailed
メッセージ: ポッド <pod-name> を削除するときに、ノード <node-name>をドレインできませんでした。 要求の数が多すぎるというエラーで削除に失敗しました。 これは、多くの場合、制限の厳しいポッド中断予算 (PDB) ポリシーが原因で発生します。 以下を参照してください。http://aka.ms/aks/debugdrainfailures
元のエラー: Kubernetes API Server への API 呼び出しに失敗しました。
原因
このエラーは、ポッドがポッド中断予算 (PDB) ポリシーによって保護されている場合に発生する可能性があります。 この状況では、ポッドはドレインに抵抗します。
この状況をテストするには、 kubectl get pdb -A
を実行し、 Allowed Disruption 値を確認します。 値は 1 以上にする必要があります。 詳細については、「 ポッド中断予算を使用した可用性の計画を参照してください。
Allowed Disruption値が0の場合、アップグレード プロセス中にノードのドレインが失敗します。
この問題を解決するには、次の解決策のいずれかを使用します。
解決策 1: ポッドのドレインを有効にする
- PDB を調整してポッドのドレインを有効にします。 一般に、許可される中断は、
Min Available / Max unavailable
またはRunning pods / Replicas
パラメーターによって制御されます。 PDB レベルでMin Available / Max unavailable
パラメーターを変更するか、Running pods / Replicas
の数を増やして、[許可された中断] 値を 1 以上にプッシュできます。 - AKS クラスターを以前にアップグレードしようとしたのと同じバージョンにアップグレードし直してください。 このプロセスによって調整がトリガーされます。
解決策 2: PDB のバックアップ、削除、再デプロイ
- PDB
kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yaml
のバックアップを作成し、PDBkubectl delete pdb <pdb-name> -n /<pdb-namespace>
を削除します。 アップグレードが完了したら、PDBkubectl apply -f pdb_backup.yaml
を再デプロイできます。 - AKS クラスターを以前にアップグレードしようとしたのと同じバージョンにアップグレードし直してください。 このプロセスによって調整がトリガーされます。
解決策 3: ドレインできないポッドを削除する
ドレインできないポッドを削除します。
Note
ポッドがデプロイまたは StatefulSet によって作成された場合は、ReplicaSet によって制御されます。 その場合は、デプロイまたは StatefulSet を削除する必要があります。 その前に、バックアップ (
kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yaml
) を作成することをお勧めします。AKS クラスターを以前にアップグレードしようとしたのと同じバージョンにアップグレードし直してください。 このプロセスによって調整がトリガーされます。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。