4.5. トラブルシューティング

OpenShift CLI ツール または Velero CLI ツール を使用して、Velero カスタムリソース (CR) をデバッグできます。Velero CLI ツールは、より詳細なログおよび情報を提供します。

インストールの問題CR のバックアップと復元の問題、および Restic の問題 を確認できます。

must-gather ツール を使用して、ログ、CR 情報、および Prometheus メトリックデータを収集できます。

Velero CLI ツールは、次の方法で入手できます。

  • Velero CLI ツールをダウンロードする
  • クラスター内の Velero デプロイメントで Velero バイナリーにアクセスする

4.5.1. Velero CLI ツールをダウンロードする

Velero のドキュメントページ の手順に従って、Velero CLI ツールをダウンロードしてインストールできます。

このページには、以下に関する手順が含まれています。

  • Homebrew を使用した macOS
  • GitHub
  • Chocolatey を使用した Windows

前提条件

  • DNS とコンテナーネットワークが有効になっている、v1.16 以降の Kubernetes クラスターにアクセスできる。
  • kubectl をローカルにインストールしている。

手順

  1. ブラウザーを開き、"Install the CLI" on the Verleo website に移動します。
  2. macOS、GitHub、または Windows の適切な手順に従います。
  3. 次の表に従って、OADP および OpenShift Container Platform のバージョンに適した Velero バージョンをダウンロードします。

    表4.2 OADP-Velero-OpenShift Container Platform バージョンの関係

    OADP のバージョンVelero のバージョンOpenShift Container Platform バージョン

    1.0.0

    1.7

    4.6 以降

    1.0.1

    1.7

    4.6 以降

    1.0.2

    1.7

    4.6 以降

    1.0.3

    1.7

    4.6 以降

    1.1.0

    {velero-version}

    4.9 以降

    1.1.1

    {velero-version}

    4.9 以降

    1.1.2

    {velero-version}

    4.9 以降

4.5.2. クラスター内の Velero デプロイメントで Velero バイナリーにアクセスする

shell コマンドを使用して、クラスター内の Velero デプロイメントの Velero バイナリーにアクセスできます。

前提条件

  • DataProtectionApplication カスタムリソースのステータスが Reconcile complete である。

手順

  • 次のコマンドを入力して、必要なエイリアスを設定します。

    $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'

4.5.3. OpenShift CLI ツールを使用した Velero リソースのデバッグ

OpenShift CLI ツールを使用して Velero カスタムリソース (CR) と Velero Pod ログを確認することで、失敗したバックアップまたは復元をデバッグできます。

Velero CR

oc describe コマンドを使用して、Backup または Restore CR に関連する警告とエラーの要約を取得します。

$ oc describe <velero_cr> <cr_name>
Velero Pod ログ

oc logs コマンドを使用して、Velero Pod ログを取得します。

$ oc logs pod/<velero>
Velero Pod のデバッグログ

次の例に示すとおり、DataProtectionApplication リソースで Velero ログレベルを指定できます。

注記

このオプションは、OADP 1.0.3 以降で使用できます。

apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
metadata:
  name: velero-sample
spec:
  configuration:
    velero:
      logLevel: warning

次の logLevel 値を使用できます。

  • trace
  • debug
  • info
  • warning
  • error
  • 致命的
  • panic

ほとんどのログには debug を使用することをお勧めします。

4.5.4. Velero CLI ツールを使用した Velero リソースのデバッグ

Velero CLI ツールを使用して、Backup および Restore カスタムリソース (CR) をデバッグし、ログを取得できます。

Velero CLI ツールは、OpenShift CLI ツールよりも詳細な情報を提供します。

構文

oc exec コマンドを使用して、Velero CLI コマンドを実行します。

$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
  <backup_restore_cr> <command> <cr_name>

$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
  backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql

ヘルプオプション

velero --help オプションを使用して、すべての Velero CLI コマンドを一覧表示します。

$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
  --help
describe コマンド

velero describe コマンドを使用して、Backup または Restore CR に関連する警告とエラーの要約を取得します。

$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
  <backup_restore_cr> describe <cr_name>

$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
  backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql

logs コマンド

velero logs コマンドを使用して、Backup または Restore CR のログを取得します。

$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
  <backup_restore_cr> logs <cr_name>

$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
  restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf

4.5.5. Velero と受付 Webhook に関する問題

Velero では、復元中に受付 Webhook の問題を解決する機能が制限されています。受付 Webhook を使用するワークロードがある場合は、追加の Velero プラグインを使用するか、ワークロードの復元方法を変更する必要がある場合があります。

通常、受付 Webhook を使用するワークロードでは、最初に特定の種類のリソースを作成する必要があります。通常、受付 Webhook は子リソースをブロックするため、これは特にワークロードに子リソースがある場合に当てはまります。

たとえば、service.serving.knative.dev などの最上位オブジェクトを作成または復元すると、通常、子リソースが自動的に作成されます。最初にこれを行う場合、Velero を使用してこれらのリソースを作成および復元する必要はありません。これにより、Velero が使用する可能性のある受付 Webhook によって子リソースがブロックされるという問題が回避されます。

4.5.5.1. 受付 Webhook を使用する Velero バックアップの回避策の復元

このセクションでは、受付 Webhook を使用するいくつかのタイプの Velero バックアップのリソースを復元するために必要な追加の手順について説明します。

4.5.5.1.1. Knative リソースの復元

Velero を使用して受付 Webhook を使用する Knative リソースをバックアップする際に問題が発生する場合があります。

受付 Webhook を使用する Knative リソースをバックアップおよび復元する場合は、常に最上位の Service リソースを最初に復元することで、このような問題を回避できます。

手順

  • 最上位の service.serving.knavtive.dev Service リソースを復元します。

    $ velero restore <restore_name> \
      --from-backup=<backup_name> --include-resources \
      service.serving.knavtive.dev
4.5.5.1.2. IBM AppConnect リソースの復元

Velero を使用して受付 Webhook を持つ IBM AppConnect リソースを復元するときに問題が発生した場合は、この手順のチェックを実行できます。

手順

  1. クラスター内の kind: MutatingWebhookConfiguration の受付プラグインの変更があるかチェックします。

    $ oc get mutatingwebhookconfigurations
  2. kind: MutatingWebhookConfiguration の YAML ファイルを調べて、問題が発生しているオブジェクトの作成をブロックするルールがないことを確認します。詳細は、the official Kuberbetes documentation を参照してください。
  3. バックアップ時に使用される type: Configuration.appconnect.ibm.com/v1beta1spec.version が、インストールされている Operator のサポート対象であることを確認してください。

4.5.6. インストールの問題

Data Protection Application をインストールするときに、無効なディレクトリーまたは誤った認証情報を使用することによって問題が発生する可能性があります。

4.5.6.1. バックアップストレージに無効なディレクトリーが含まれています

Velero Pod ログにエラーメッセージ Backup storage contains invalid top-level directories が表示されます。

原因

オブジェクトストレージには、Velero ディレクトリーではないトップレベルのディレクトリーが含まれています。

解決方法

オブジェクトストレージが Velero 専用でない場合は、DataProtectionApplication マニフェストで spec.backupLocations.velero.objectStorage.prefix パラメーターを設定して、バケットの接頭辞を指定する必要があります。

4.5.6.2. 不正な AWS 認証情報

oadp-aws-registry Pod ログにエラーメッセージ InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records. が表示されます。

Velero Pod ログには、エラーメッセージ NoCredentialProviders: no valid providers in chain が表示されます。

原因

Secret オブジェクトの作成に使用された credentials-velero ファイルの形式が正しくありません。

解決方法

次の例のように、credentials-velero ファイルが正しくフォーマットされていることを確認します。

サンプル credentials-velero ファイル

[default] 1
aws_access_key_id=AKIAIOSFODNN7EXAMPLE 2
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

1
AWS デフォルトプロファイル。
2
値を引用符 ("') で囲まないでください。

4.5.7. CR の問題のバックアップおよび復元

Backup および Restore カスタムリソース (CR) でこれらの一般的な問題が発生する可能性があります。

4.5.7.1. バックアップ CR はボリュームを取得できません

Backup CR は、エラーメッセージ InvalidVolume.NotFound: The volume ‘vol-xxxx' does not exist を表示します。

原因

永続ボリューム (PV) とスナップショットの場所は異なるリージョンにあります。

解決方法

  1. DataProtectionApplication マニフェストの spec.snapshotLocations.velero.config.region キーの値を編集して、スナップショットの場所が PV と同じリージョンにあるようにします。
  2. 新しい Backup CR を作成します。

4.5.7.2. バックアップ CR ステータスは進行中のままです

Backup CR のステータスは InProgress のフェーズのままであり、完了しません。

原因

バックアップが中断された場合は、再開することができません。

解決方法

  1. Backup CR の詳細を取得します。

    $ oc -n {namespace} exec deployment/velero -c velero -- ./velero \
      backup describe <backup>
  2. Backup CR を削除します。

    $ oc delete backup <backup> -n openshift-adp

    進行中の Backup CR はファイルをオブジェクトストレージにアップロードしていないため、バックアップの場所をクリーンアップする必要はありません。

  3. 新しい Backup CR を作成します。

4.5.7.3. バックアップ CR ステータスが PartlyFailed のままになる

Restic が使用されていない Backup CR のステータスは、PartiallyFailed フェーズのままで、完了しません。関連する PVC のスナップショットは作成されません。

原因

CSI スナップショットクラスに基づいてバックアップが作成されているが、ラベルがない場合、CSI スナップショットプラグインはスナップショットの作成に失敗します。その結果、Velero Pod は次のようなエラーをログに記録します。

+

time="2023-02-17T16:33:13Z" level=error msg="Error backing up item" backup=openshift-adp/user1-backup-check5 error="error executing custom action (groupResource=persistentvolumeclaims, namespace=busy1, name=pvc1-user1): rpc error: code = Unknown desc = failed to get volumesnapshotclass for storageclass ocs-storagecluster-ceph-rbd: failed to get volumesnapshotclass for provisioner openshift-storage.rbd.csi.ceph.com, ensure that the desired volumesnapshot class has the velero.io/csi-volumesnapshot-class label" logSource="/remote-source/velero/app/pkg/backup/backup.go:417" name=busybox-79799557b5-vprq

解決方法

  1. Backup CR を削除します。

    $ oc delete backup <backup> -n openshift-adp
  2. 必要に応じて、BackupStorageLocation に保存されているデータをクリーンアップして、領域を解放します。
  3. ラベル velero.io/csi-volumesnapshot-class=trueVolumeSnapshotClass オブジェクトに適用します。

    $ oc label volumesnapshotclass/<snapclass_name> velero.io/csi-volumesnapshot-class=true
  4. 新しい Backup CR を作成します。

4.5.8. Restic の問題

Restic を使用してアプリケーションのバックアップを作成すると、これらの問題が発生する可能性があります。

4.5.8.1. root_squash が有効になっている NFS データボリュームの Restic パーミッションエラー

Restic Pod ログには、エラーメッセージ controller=pod-volume-backup error="fork/exec/usr/bin/restic: permission denied" が表示されます。

原因

NFS データボリュームで root_squash が有効になっている場合、Resticnfsnobody にマッピングされ、バックアップを作成する権限がありません。

解決方法

この問題を解決するには、Restic の補足グループを作成し、そのグループ ID を DataProtectionApplication マニフェストに追加します。

  1. NFS データボリューム上に Restic の補足グループを作成します。
  2. NFS ディレクトリーに setgid ビットを設定して、グループの所有権が継承されるようにします。
  3. 次の例のように、spec.configuration.restic.supplementalGroups パラメーターおよびグループ ID を DataProtectionApplication マニフェストに追加します。

    spec:
      configuration:
        restic:
          enable: true
          supplementalGroups:
          - <group_id> 1
    1
    補助グループ ID を指定します。
  4. Restic Pod が再起動し、変更が適用されるまで待機します。

4.5.8.2. バケットが空になった後に、Restic Backup CR を再作成することはできない

名前空間の Restic Backup CR を作成し、オブジェクトストレージバケットを空にしてから、同じ名前空間の Backup CR を再作成すると、再作成された Backup CR は失敗します。

velero Pod ログにエラーメッセージstderr=Fatal: unable to open config file: Stat: The specified key does not exist.\nIs there a repository at the following location? が表示されます。

原因

オブジェクトストレージから Restic ディレクトリーが削除された場合、Velero は ResticRepository マニフェストから Restic リポジトリーを再作成または更新しません。詳細については、Velero issue 4421 を参照してください。

解決方法

  • 次のコマンドを実行して、関連する Restic リポジトリーを名前空間から削除します。

    $ oc delete resticrepository openshift-adp <name_of_the_restic_repository>

    次のエラーログでは、mysql-persistent が問題のある Restic リポジトリーです。わかりやすくするために、リポジトリーの名前は斜体で表示されます。

     time="2021-12-29T18:29:14Z" level=info msg="1 errors
     encountered backup up item" backup=velero/backup65
     logSource="pkg/backup/backup.go:431" name=mysql-7d99fc949-qbkds
     time="2021-12-29T18:29:14Z" level=error msg="Error backing up item"
     backup=velero/backup65 error="pod volume backup failed: error running
     restic backup, stderr=Fatal: unable to open config file: Stat: The
     specified key does not exist.\nIs there a repository at the following
     location?\ns3:http://minio-minio.apps.mayap-oadp-
     veleo-1234.qe.devcluster.openshift.com/mayapvelerooadp2/velero1/
     restic/mysql-persistent\n: exit status 1" error.file="/remote-source/
     src/github.com/vmware-tanzu/velero/pkg/restic/backupper.go:184"
     error.function="github.com/vmware-tanzu/velero/
     pkg/restic.(*backupper).BackupPodVolumes"
     logSource="pkg/backup/backup.go:435" name=mysql-7d99fc949-qbkds

4.5.9. must-gather ツールの使用

must-gather ツールを使用して、OADP カスタムリソースのログ、メトリクス、および情報を収集できます。

must-gather データはすべてのカスタマーケースに割り当てられる必要があります。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにログインする必要があります。
  • OpenShift CLI (oc) がインストールされている必要があります。

手順

  1. must-gather データを保存するディレクトリーに移動します。
  2. 次のデータ収集オプションのいずれかに対して、oc adm must-gather コマンドを実行します。

    $ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.1

    データは must-gather/must-gather.tar.gz として保存されます。このファイルを Red Hat カスタマーポータル で作成したサポートケースにアップロードすることができます。

    $ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.1 \
      -- /usr/bin/gather_metrics_dump

    この操作には長時間かかる場合があります。データは must-gather/metrics/prom_data.tar.gz として保存されます。

Prometheus コンソールを使用したメトリクスデータの表示

Prometheus コンソールでメトリックデータを表示できます。

手順

  1. prom_data.tar.gz ファイルを解凍します。

    $ tar -xvzf must-gather/metrics/prom_data.tar.gz
  2. ローカルの Prometheus インスタンスを作成します。

    $ make prometheus-run

    このコマンドでは、Prometheus URL が出力されます。

    出力

    Started Prometheus on http://localhost:9090

  3. Web ブラウザーを起動して URL に移動し、Prometheus Web コンソールを使用してデータを表示します。
  4. データを確認した後に、Prometheus インスタンスおよびデータを削除します。

    $ make prometheus-cleanup