Share via


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 でノード プールをスケーリングするには、次の手順に従います。

  1. Azure portal で、AKS クラスターを開きます。
  2. [設定][ノード プール] に移動します。
  3. [ノード プールのスケーリング] を選択し、[ノード数範囲] の最小値と最大値を更新します。
  4. [適用] を選択します。

シナリオ 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 という名前の AzurePodIdentityExceptionkube-system 名前空間に追加されます。 AzurePodIdentityException を使用すると、NMI サーバーによって傍受されることなく、特定のラベルがあるポッドから Azure Instance Metadata Service (IMDS) エンドポイントにアクセスできます。

拡張機能ポッドは除外されないため、Microsoft Entra ID ポッド ID を手動で有効にする必要があります。

解決策: AKS クラスターに pod-identity 例外を作成します (これは dataprotection-microsoft 名前空間と not kube-system に対してのみ機能します)。 詳細については、こちらを参照してください

  1. 次のコマンドを実行します。

    az aks pod-identity exception add --resource-group shracrg --cluster-name shractestcluster --namespace dataprotection-microsoft --pod-labels app.kubernetes.io/name=dataprotection-microsoft-kubernetes
    
  2. クラスター内の Azurepodidentityexceptions を確認するには、次のコマンドを実行します。

    kubectl get Azurepodidentityexceptions --all-namespaces
    
  3. "ストレージ 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 オーバーライドを作成する必要があります。

  1. クラスター内の Existing CoreDNS-custom YAML をフェッチするには (後で参照できるようにローカルに保存する)、次のコマンドを実行します。

    kubectl get configmap coredns-custom -n kube-system -o yaml
    
  2. 米国中部 DP エンドポイントからパブリック IP へのマッピングをオーバーライドするには (アタッチされている YAML ファイルをダウンロードします)、次のコマンドを実行します。

    kubectl apply -f corednsms.yaml
    
  3. coredns ポッドを強制的に再読み込みするには、次のコマンドを実行します。

    kubectl delete pod --namespace kube-system -l k8s-app=kube-dns
    
  4. 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
    
  5. ExtensionAgent ポッドのログを確認するには、次のコマンドを実行します。

    kubectl logs pod/extension-agent-<pod guid that’s there in your cluster> -n kube-system --tail=200
    
  6. バックアップ拡張機能を削除して再インストールし、バックアップを開始します。

インストール後のバックアップ拡張機能に関連するエラー

これらのエラー コードは、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 だけ増やすか、コンピューティング制限を引き上げます。 その後、数分待ってからコマンドを再度実行します。これによって、ポッドの状態が "実行中" に変化するはずです。 問題が続く場合は、拡張機能を削除して再インストールします。

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 を使用して、この不足しているストレージ アカウント上のアクセス許可を再割り当てします。

コンテナー化されたバックアップ ベースのエラー

このエラー コードは、AKS バックアップを有効にしてバックアップをコンテナー標準データストアに保存する際に表示される可能性があります。

DppUserErrorVaultTierPolicyNotSupported

原因: このエラー コードは、バックアップ コンテナー用のコンテナー標準データストアに対して、保持ルールが定義されたバックアップ ポリシーが、このデータストアがサポートされていないリージョン内に作成されている場合に表示されます。

推奨されるアクション: Azure portal でコンテナー標準期間の定義有りで保持ルールを更新します。

  1. ルールの横にある [編集] アイコンを選択します。

    Screenshot shows how to edit the retention duration of the AKS backups.

  2. [コンテナー標準] の横にあるチェックボックスを解除した後、[更新] を選択します。

    Screenshot shows clearing the vault-standard checkbox.

  3. 運用レベル バックアップ用のバックアップ ポリシーを作成します (AKS クラスターのスナップショットのみ)。

AKS のバックアップ ジョブと復元ジョブの完了時に警告が表示される

UserErrorPVSnapshotDisallowedByPolicy

エラー コード: UserErrorPVSnapshotDisallowedByPolicy

原因: CSI ドライバーがボリューム スナップショットを取得できないようにする Azure ポリシーがサブスクリプションに対して割り当てられています。

推奨されるアクション: ディスク スナップショット操作できないようにする Azure ポリシーを削除した後、オンデマンド バックアップを実行する。

UserErrorPVSnapshotLimitReached

エラー コード: UserErrorPVSnapshotLimitReached

原因: ある時点で存在できる永続ボリュームのスナップショットの数は限られています。 Azure ディスクベースの永続ボリュームの場合、この制限は "500 個のスナップショット" です。 このエラーは、サポートされている制限を超えるスナップショットが存在することになるため、特定の永続ボリュームのスナップショットが作成されない場合に表示されます。

推奨されるアクション: バックアップ ポリシーを更新して保持期間を短縮し、古い復旧ポイントがバックアップ コンテナーによって削除されるのを待ちます。

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 クラスターの FlowSchemaPriorityLevelConfigurations CRs のバージョンが異なります。 クラスターのバージョンが一致しないため、一部の Kubernetes リソースが復元されません。

推奨されるアクション: ターゲット クラスターに対してソース クラスターと同じクラスター バージョンを使用するか、手動で CR を適用します。

次のステップ