次の方法で共有


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
メッセージ: ポッド<ポッド名>を削除するときに、ドレイン ノードの<ノード名>が失敗しました。 要求の数が多すぎるエラーで削除が失敗しました。 これは多くの場合、制限の厳しいポッド中断予算 (PDB) ポリシーが原因で発生します。 http://aka.ms/aks/debugdrainfailures を参照してください。 元のエラー: Kubernetes API Server への API 呼び出しに失敗しました。

原因

このエラーは、ポッドがポッド中断予算 (PDB) ポリシーによって保護されている場合に発生する可能性があります。 この状況では、ポッドはドレインに抵抗します。

この状況をテストするには、 を実行kubectl get pdb -Aし、[許可された中断] の値をチェックします。 値は 1 以上にする必要があります。 詳細については、「 ポッド中断予算を使用して可用性を計画する」を参照してください。

[許可された中断] の値が 0 の場合、アップグレード プロセス中にノード ドレインは失敗します。

この問題を解決するには、次のいずれかの解決策を使用します。

解決策 1: ポッドのドレインを有効にする

  1. PDB を調整して、ポッドのドレインを有効にします。 通常、許可される中断は、 Min Available / Max unavailable または Running pods / Replicas パラメーターによって制御されます。 PDB レベルでパラメーターを Min Available / Max unavailable 変更するか、 の Running pods / Replicas 数を増やして、[許可された中断] の値を 1 以上にプッシュできます。
  2. AKS クラスターを以前にアップグレードしようとしたのと同じバージョンにアップグレードし直してください。 このプロセスによって調整がトリガーされます。

解決策 2: PDB のバックアップ、削除、再デプロイ

  1. PDB のバックアップを作成し、PDB kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yamlkubectl delete pdb <pdb-name> -n /<pdb-namespace>を削除します。 アップグレードが完了したら、PDB kubectl apply -f pdb_backup.yamlを再デプロイできます。
  2. AKS クラスターを以前にアップグレードしようとしたのと同じバージョンにアップグレードし直してください。 このプロセスによって調整がトリガーされます。

解決策 3: ドレインできないポッドを削除する

  1. ドレインできないポッドを削除します。

    注:

    ポッドがデプロイまたは StatefulSet によって作成された場合は、ReplicaSet によって制御されます。 その場合は、デプロイまたは StatefulSet を削除する必要があります。 その前に、バックアップを作成することをお勧めします。 kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yaml

  2. AKS クラスターを以前にアップグレードしようとしたのと同じバージョンにアップグレードし直してください。 このプロセスによって調整がトリガーされます。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。