Azure Kubernetes Service のバックアップと復元のトラブルシューティングを行う
この記事では、Azure Kubernetes Service (AKS) のバックアップ、復元、管理のエラーを解決するうえで役立つトラブルシューティング手順について説明します。
AKS Backup Extension のインストール エラーの解決策
シナリオ 1
エラー メッセージ:
{Helm installation from path [] for release [azure-aks-backup] failed with the following error: err [release azure-aks-backup failed, and has been uninstalled due to atomic being set: failed post-install: timed out waiting for the condition]} occurred while doing the operation: {Installing the extension} on the config"`
原因: 拡張機能は正常にインストールされましたが、ポッドに必要なコンピューティングとメモリがを使用できないため、ポッドは生成されません。
解決策: この問題を解決するには、クラスター内のノード数を増やして、ポッドの生成に十分なコンピューティングとメモリを使用できるようにします。 Azure portal でノード プールをスケーリングするには、次の手順に従います。
- Azure portal で、AKS クラスターを開きます。
- [設定] の [ノード プール] に移動します。
- [ノード プールのスケーリング] を選択し、[ノード数範囲] の最小値と最大値を更新します。
- [適用] を選択します。
シナリオ 2
エラー メッセージ:
BackupStorageLocation "default" is unavailable: rpc error: code = Unknown desc = azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to https://management.azure.com/subscriptions/e30af180-aa96-4d81-981a-b67570b0d615/resourceGroups/AzureBackupRG_westeurope_1/providers/Microsoft.Storage/storageAccounts/devhayyabackup/listKeys?%24expand=kerb&api-version=2019-06-01: StatusCode=404 -- Original Error: adal: Refresh request failed. Status Code = '404'. Response body: no azure identity found for request clientID 4e95##### REDACTED #####0777`
Endpoint http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=4e95dcc5-a769-4745-b2d9-
原因: AKS クラスターでポッドマネージド ID を有効にすると、aks-addon-exception という名前の AzurePodIdentityException が kube-system 名前空間に追加されます。 AzurePodIdentityException を使用すると、NMI サーバーによって傍受されることなく、特定のラベルがあるポッドから Azure Instance Metadata Service (IMDS) エンドポイントにアクセスできます。
拡張機能ポッドは除外されないため、Microsoft Entra ID ポッド ID を手動で有効にする必要があります。
解決策: AKS クラスターに pod-identity 例外を作成します (これは dataprotection-microsoft 名前空間と not kube-system に対してのみ機能します)。 詳細については、こちらを参照してください。
次のコマンドを実行します。
az aks pod-identity exception add --resource-group shracrg --cluster-name shractestcluster --namespace dataprotection-microsoft --pod-labels app.kubernetes.io/name=dataprotection-microsoft-kubernetes
クラスター内の Azurepodidentityexceptions を確認するには、次のコマンドを実行します。
kubectl get Azurepodidentityexceptions --all-namespaces
"ストレージ BLOB データ共同作成者" ロールを拡張機能 ID に割り当てるには、次のコマンドを実行します。
az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name aksclustername --resource-group aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Blob Data Contributor' --scope /subscriptions/subscriptionid/resourceGroups/storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/storageaccountname
シナリオ 3
エラー メッセージ:
{"Message":"Error in the getting the Configurations: error {Post \https://centralus.dp.kubernetesconfiguration.azure.com/subscriptions/ subscriptionid /resourceGroups/ aksclusterresourcegroup /provider/managedclusters/clusters/ aksclustername /configurations/getPendingConfigs?api-version=2021-11-01\: dial tcp: lookup centralus.dp.kubernetesconfiguration.azure.com on 10.63.136.10:53: no such host}","LogType":"ConfigAgentTrace","LogLevel":"Error","Environment":"prod","Role":"ClusterConfigAgent","Location":"centralus","ArmId":"/subscriptions/ subscriptionid /resourceGroups/ aksclusterresourcegroup /providers/Microsoft.ContainerService/managedclusters/ aksclustername ","CorrelationId":"","AgentName":"ConfigAgent","AgentVersion":"1.8.14","AgentTimestamp":"2023/01/19 20:24:16"}`
原因: AKS クラスターでクラスター拡張機能を使用するには、特定の FQDN/アプリケーション規則が必要です。 詳細情報。
このエラーは、これらの FQDN 規則がないために、クラスター拡張機能サービスからの構成情報が使用できなかったことから発生します。
解決方法: この問題を解決するには、パブリック ネットワークを通過する DP エンドポイントに対して CoreDNS-custom オーバーライドを作成する必要があります。
クラスター内の既存の CoreDNS-custom YAML を取得します (後で参照できるようにローカルに保存します)。
kubectl get configmap coredns-custom -n kube-system -o yaml
centralus DP エンドポイントのパブリック IP へのマッピングをオーバーライドします (以下の YAML を使います)。
apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: aksdp.override: | hosts { 20.40.200.153 centralus.dp.kubernetesconfiguration.azure.com fallthrough }
次に、以下のコマンドを実行して、更新の yaml ファイルを適用します。
kubectl apply -f corednsms.yaml
coredns
ポッドを強制的に再読み込みするには、次のコマンドを実行します。kubectl delete pod --namespace kube-system -l k8s-app=kube-dns
ExtensionAgent ポッドから
NSlookup
を実行して coreDNS-custom が動作しているかどうかを確認するには、次のコマンドを実行します。kubectl exec -i -t pod/extension-agent-<pod guid that's there in your cluster> -n kube-system -- nslookup centralus.dp.kubernetesconfiguration.azure.com
ExtensionAgent ポッドのログを確認するには、次のコマンドを実行します。
kubectl logs pod/extension-agent-<pod guid that’s there in your cluster> -n kube-system --tail=200
バックアップ拡張機能を削除して再インストールし、バックアップを開始します。
インストール後のバックアップ拡張機能に関連するエラー
これらのエラー コードは、AKS クラスターにインストールされたバックアップ拡張機能の問題が原因で表示されます。
KubernetesBackupListExtensionsError:
原因: バックアップ コンテナーは、検証の一環としてクラスターにバックアップ拡張機能がインストールされているかどうかを確認します。 このため、コンテナー MSI には、クラスターにインストールされているすべての拡張機能の一覧表示を許可する AKS クラスターでの閲覧者アクセス許可が必要です。
推奨されるアクション: 割り当てられた閲覧者ロールに list-extension アクセス許可が不足しているため、閲覧者ロールをコンテナー MSI に再度割り当てます (既存のロールの割り当てを削除し、閲覧者ロールを再度割り当てます)。 再割り当てが失敗した場合は、別のバックアップ コンテナーを使用してバックアップを構成します。
UserErrorKubernetesBackupExtensionNotFoundError
原因: バックアップ コンテナーは、検証の一環としてクラスターにバックアップ拡張機能がインストールされているかどうかを確認します。 コンテナーは、クラスターにインストールされている拡張機能を一覧表示する操作を実行します。 バックアップ拡張機能が一覧に存在しない場合は、このエラーが表示されます。
推奨されるアクション: CL または Azure portal クライアントを使用して拡張機能を削除した後、拡張機能を再度インストールします。
UserErrorKubernetesBackupExtensionHasErrors
原因: クラスターにインストールされているバックアップ拡張機能に、いくつかの内部エラーがあります。
推奨されるアクション: CL または Azure portal クライアントを使用して拡張機能を削除した後、拡張機能を再度インストールします。
UserErrorKubernetesBackupExtensionIdentityNotFound
原因: AKS バックアップでは、クラスターにバックアップ拡張機能がインストールされていることが必要です。 拡張機能にはインストールに伴い、拡張機能 MSI と呼ばれるユーザー ID が作成されて付与されます。 この MSI は、AKS クラスターのノード プールを構成するリソース グループに作成されます。 この MSI には、バックアップ ストレージの場所へのアクセスに必要なロールが割り当てられます。 このエラー コードは、拡張機能 ID が見つからないことを示しています。
推奨されるアクション: CLI または Azure portal クライアントを使用して拡張機能を削除した後、拡張機能を再度インストールします。 拡張機能と共に新しい ID が作成されます。
KubernetesBackupCustomResourcesTrackingTimeOutError
原因: Azure Backup for AKS では、クラスターにバックアップ拡張機能がインストールされていることが必要です。 バックアップおよび復元操作を実行するために、クラスターにはカスタム リソースが作成されます。 拡張機能によって生成されるポッドは、これらの CR を介してバックアップ関連の操作を実行します。 このエラーは、拡張機能がこれらの CR の状態を更新できない場合に発生します。
推奨されるアクション: 拡張機能の正常性は、コマンド kubectl get pods -n dataprotection.microsoft
を実行することで検証する必要があります。 ポッドが実行中状態でない場合は、クラスター内のノードの数を 1 だけ増やすか、コンピューティング制限を引き上げます。 その後、数分待ってからコマンドを再度実行します。これによって、ポッドの状態が "実行中" に変化するはずです。 問題が続く場合は、拡張機能を削除して再インストールします。
BackupPluginPodRestartedDuringBackupError
原因: 現在のノードの CPU/メモリ リソースが不足しているために、AKS クラスター内のバックアップ拡張機能ポッド (dataprotection-microsoft-kubernetes-agent) が不安定になり、OOM (メモリ不足) のキル インシデントが発生しています。 これは、バックアップ拡張機能ポッドによって要求されたコンピューティング量が少ないためである可能性があります。
推奨されるアクション: これに対処するには、このポッドに割り当てられるコンピューティング値を増やすことをお勧めします。 このようにすると、これが十分なコンピューティング リソースを利用できる AKS クラスター内の別のノードに自動的にプロビジョニングされます。
このポッドのコンピューティングの現在の値は次のとおりです。
resources.requests.cpu は 500m、resources.requests.memory は 128Mi。'resources.requests.memory' パラメーターを更新してメモリ割り当てを 512Mi に変更してください。 問題が解決しない場合は、メモリの割り当て後に、'resources.requests.cpu' パラメーターを 900m に増やすことをお勧めします。 次の手順に従って、パラメーターの値を増やすことができます。
- Azure portal で、AKS クラスター ブレードに移動します。
- [拡張機能とアプリケーション] をクリックし、[azure-aks-backup] 拡張機能を選択します。
- 次のキーと値のペアを追加して、ポータルの構成設定を更新します。 resources.requests.cpu 900m resources.requests.memory 512Mi
BackupPluginDeleteBackupOperationFailed
原因: バックアップを削除するには、バックアップ拡張機能が実行されている必要があります。
推奨されるアクション: クラスターが実行されている場合は、拡張機能が正常な状態で実行されているかどうかを確認します。 拡張機能ポッドが生成されているかどうかを確認して、生成されていなければ、ノードを増やします。 これが失敗する場合は、拡張機能の削除と再インストールを試します。 バックアップ クラスターが削除されたら、スナップショットとメタデータを手動で削除します。
ExtensionTimedOutWaitingForBackupItemSync
原因: バックアップ拡張機能は、バックアップ アイテムがストレージ アカウントと同期されるまで待機します。
推奨されるアクション: このエラー コードが表示された場合は、バックアップ操作を再試行するか、拡張機能を再インストールします。
バックアップ ストレージの場所に基づくエラー
これらのエラー コードは、AKS クラスターにインストールされたバックアップ拡張機能に基づく問題が原因で表示されます。
UserErrorDeleteBackupFailedBackupStorageLocationReadOnly
原因: バックアップ拡張機能のインストール時に入力として指定されたストレージ アカウントが "読み取り専用" 状態であり、BLOB コンテナーからバックアップ データを削除することができません。
推奨されるアクション: ストレージ アカウントの状態を "読み取り専用" から "書き込み" に変更します。
UserErrorDeleteBackupFailedBackupStorageLocationNotFound
原因: 拡張機能のインストール中には、バックアップ ストレージの場所を、ストレージ アカウントと BLOB コンテナーを含む入力として指定する必要があります。 このエラーは、拡張機能のインストール中に場所が削除されたか、誤って追加された場合に表示されます。
推奨されるアクション: バックアップ拡張機能を削除した後、正しいストレージ アカウントと BLOB コンテナーを入力として再インストールします。
UserErrorBackupFailedBackupStorageLocationReadOnly
原因: バックアップ拡張機能のインストール時に入力として指定されたストレージ アカウントが "読み取り専用" 状態であり、BLOB コンテナーにバックアップ データを書き込むことができません。
推奨されるアクション: ストレージ アカウントの状態を "読み取り専用" から "書き込み" に変更します。
UserErrorNoDefaultBackupStorageLocationFound
原因: 拡張機能のインストール中には、バックアップ ストレージの場所を、ストレージ アカウントと BLOB コンテナーを含む入力として指定する必要があります。 このエラーは、拡張機能のインストール中に場所が削除されたか、誤って入力された場合に表示されます。
推奨されるアクション: バックアップ拡張機能を削除した後、正しいストレージ アカウントと BLOB コンテナーを入力として再インストールします。
UserErrorExtensionMSIMissingPermissionsOnBackupStorageLocation
原因: バックアップ拡張機能には、バックアップ ストレージの場所 (ストレージ アカウント) での "ストレージ BLOB データ共同作成者" ロールが必要です。 拡張機能 ID には、このロールが割り当てられます。
推奨されるアクション: このロールが不足している場合は、Azure portal または CLI を使用して、この不足しているストレージ アカウント上のアクセス許可を再度割り当てます。
UserErrorBackupStorageLocationNotReady
原因: 拡張機能のインストール中には、バックアップ ストレージの場所を、ストレージ アカウントと BLOB コンテナーを含む入力として指定する必要があります。 バックアップ拡張機能には、バックアップ ストレージの場所 (ストレージ アカウント) での "ストレージ BLOB データ共同作成者" ロールが必要です。 拡張機能 ID には、このロールが割り当てられます。
推奨されるアクション: このエラーは、拡張機能 ID にストレージ アカウントにアクセスするための適切なアクセス許可がない場合に表示されます。 このエラーは、保護操作を構成する際に初めて AKS バックアップ拡張機能がインストールされる場合に表示されます。 これは、付与されたアクセス許可が AKS バックアップ拡張機能に反映されるまでに時間がかかるため発生します。 回避策として、1 時間待ってから保護構成を再試行します。 あるいは、Azure portal または CLI を使用して、この不足しているストレージ アカウント上のアクセス許可を再割り当てします。
UserErrorSnapshotResourceGroupHasLocks
原因: このエラー コードは、バックアップ拡張機能の入力として指定されたスナップショット リソース グループに削除ロックまたは読み取りロックが適用されているときに表示されます。
推奨されるアクション: 新しいバックアップ インスタンスを構成する場合は、削除ロックまたは読み取りロックがないリソース グループを使用します。 バックアップ インスタンスが既に構成されている場合は、スナップショット リソース グループからロックを削除します。
コンテナー化されたバックアップ ベースのエラー
これらのエラー コードは、AKS バックアップを有効にしてバックアップをコンテナー標準データストアに保存しているときに表示される可能性があります。
DppUserErrorVaultTierPolicyNotSupported
原因: このエラー コードは、バックアップ コンテナー用のコンテナー標準データストアに対して、保持ルールが定義されたバックアップ ポリシーが、このデータストアがサポートされていないリージョン内に作成されている場合に表示されます。
推奨されるアクション: Azure portal でコンテナー標準期間の定義有りで保持ルールを更新します。
ルールの横にある [編集] アイコンを選択します。
[コンテナー標準] の横にあるチェックボックスを解除した後、[更新] を選択します。
運用レベル バックアップ用のバックアップ ポリシーを作成します (AKS クラスターのスナップショットのみ)。
AKS のバックアップ ジョブと復元ジョブの完了時に警告が表示される
UserErrorPVSnapshotDisallowedByPolicy
エラー コード: UserErrorPVSnapshotDisallowedByPolicy
原因: CSI ドライバーがボリューム スナップショットを取得できないようにする Azure ポリシーがサブスクリプションに対して割り当てられています。
推奨されるアクション: ディスク スナップショット操作できないようにする Azure ポリシーを削除した後、オンデマンド バックアップを実行する。
UserErrorPVSnapshotLimitReached
エラー コード: UserErrorPVSnapshotLimitReached
原因: ある時点で存在できる永続ボリュームのスナップショットの数は限られています。 Azure ディスクベースの永続ボリュームの場合、この制限は "500 個のスナップショット" です。 このエラーは、サポートされている制限を超えるスナップショットが存在することになるため、特定の永続ボリュームのスナップショットが作成されない場合に表示されます。
推奨されるアクション: バックアップ ポリシーを更新して保持期間を短縮し、Backup ボールトが以前の回復ポイントを削除するまで待ちます。
CSISnapshottingTimedOut
エラー コード: CSISnapshottingTimedOut
原因: CSI ドライバーがスナップショット ハンドルをフェッチする際にタイムアウトが発生しているためスナップショットが失敗しました。
推奨されるアクション: ログを確認し、オンデマンド バックアップを実行するか、次のスケジュールされたバックアップを待つことで、操作を再試行して正常なスナップショットを取得します。
UserErrorHookExecutionFailed
エラー コード: UserErrorHookExecutionFailed
原因: バックアップと復元と共に実行するために適用されたフックでエラーが発生し、フックが正常に適用されていません。
推奨されるアクション: ログを確認し、フックを更新してから、バックアップ/復元操作を再試行します。
UserErrorNamespaceNotFound
エラー コード: UserErrorNamespaceNotFound
原因: バックアップ構成で指定された名前空間が、バックアップの実行時に見つかりません。 名前空間が誤って指定されたか、削除されています。
推奨されるアクション: バックアップする名前空間が正しく指定されているかどうかを確認します。
UserErrorPVCHasNoVolume
エラー コード: UserErrorPVCHasNoVolume
原因: コンテキスト内の永続ボリューム要求 (PVC) に永続ボリュームがアタッチされていません。 そのため、PVC はバックアップされません。
推奨されるアクション: ボリュームをバックアップする必要がある場合は、PVC にボリュームをアタッチします。
UserErrorPVCNotBoundToVolume
エラー コード: UserErrorPVCNotBoundToVolume
原因: コンテキスト内の PVC は "保留中" の状態であり、永続ボリュームがアタッチされていません。 そのため、PVC はバックアップされません。
推奨されるアクション: ボリュームをバックアップする必要がある場合は、PVC にボリュームをアタッチします。
UserErrorPVNotFound
エラー コード: UserErrorPVNotFound
原因: 永続ボリュームの基になるストレージ メディアが見つかりません。
推奨されるアクション: 実際のストレージ メディアがアタッチされた新しい永続ボリュームを確認してアタッチします。
UserErrorStorageClassMissingForPVC
エラー コード: UserErrorStorageClassMissingForPVC
原因: AKS バックアップが、使用されているストレージ クラスをチェックし、そのクラスが使用できないため、永続ボリュームのスナップショットの取得をスキップしています。
推奨されるアクション: 使用できるストレージ・クラスを使用して PVC 仕様を更新します。
UserErrorSourceandTargetClusterCRDVersionMismatch
エラー コード: UserErrorSourceandTargetClusterCRDVersionMismatch
原因: 復元中のソース AKS クラスターとターゲット AKS クラスターの FlowSchema と PriorityLevelConfigurations CRs のバージョンが異なります。 クラスターのバージョンが一致しないため、一部の Kubernetes リソースが復元されません。
推奨されるアクション: ターゲット クラスターに対してソース クラスターと同じクラスター バージョンを使用するか、手動で CR を適用します。
LinkedAuthorizationFailed
エラー コード: LinkedAuthorizationFailed
原因: 復元操作を実行するには、バックアップされた AKS クラスターに対する読み取りアクセス許可をユーザーが持っている必要があります。
推奨されるアクション: ソース AKS クラスターに対する閲覧者ロールを割り当ててから、復元操作の実行に進んでください。