4.4. トラブルシューティング
OpenShift CLI ツール または Velero CLI ツール を使用して、Velero カスタムリソース (CR) をデバッグできます。Velero CLI ツールは、より詳細なログおよび情報を提供します。
インストールの問題、CR のバックアップと復元の問題、および Restic の問題 を確認できます。
must-gather
ツール を使用して、ログ、CR 情報、および Prometheus メトリックデータを収集できます。
Velero CLI ツールは、次の方法で入手できます。
- Velero CLI ツールをダウンロードする
- クラスター内の Velero デプロイメントで Velero バイナリーにアクセスする
4.4.1. Velero CLI ツールをダウンロードする
Velero のドキュメントページ の手順に従って、Velero CLI ツールをダウンロードしてインストールできます。
このページには、以下に関する手順が含まれています。
- Homebrew を使用した macOS
- GitHub
- Chocolatey を使用した Windows
前提条件
- DNS とコンテナーネットワークが有効になっている、v1.16 以降の Kubernetes クラスターにアクセスできる。
-
kubectl
をローカルにインストールしている。
手順
- ブラウザーを開き、"Install the CLI" on the Verleo website に移動します。
- macOS、GitHub、または Windows の適切な手順に従います。
次の表に従って、OADP のバージョンに適した Velero バージョンをダウンロードします。
表4.2 OADP-Velero のバージョン関係 OADP のバージョン Velero のバージョン 0.2.6
1.6.0
0.5.5
1.7.1
1.0.0
1.7.1
1.0.1
1.7.1
1.0.2
1.7.1
1.0.3
1.7.1
4.4.2. クラスター内の Velero デプロイメントで Velero バイナリーにアクセスする
shell コマンドを使用して、クラスター内の Velero デプロイメントの Velero バイナリーにアクセスできます。
前提条件
-
DataProtectionApplication
カスタムリソースのステータスがReconcile complete
である。
手順
次のコマンドを入力して、必要なエイリアスを設定します。
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
4.4.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.4.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.4.5. インストールの問題
Data Protection Application をインストールするときに、無効なディレクトリーまたは誤った認証情報を使用することによって問題が発生する可能性があります。
4.4.5.1. バックアップストレージに無効なディレクトリーが含まれています
Velero
Pod ログにエラーメッセージ Backup storage contains invalid top-level directories
が表示されます。
原因
オブジェクトストレージには、Velero ディレクトリーではないトップレベルのディレクトリーが含まれています。
解決方法
オブジェクトストレージが Velero 専用でない場合は、DataProtectionApplication
マニフェストで spec.backupLocations.velero.objectStorage.prefix
パラメーターを設定して、バケットの接頭辞を指定する必要があります。
4.4.5.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
4.4.6. CR の問題のバックアップおよび復元
Backup
および Restore
カスタムリソース (CR) でこれらの一般的な問題が発生する可能性があります。
4.4.6.1. バックアップ CR はボリュームを取得できません
Backup
CR は、エラーメッセージ InvalidVolume.NotFound: The volume ‘vol-xxxx' does not exist
を表示します。
原因
永続ボリューム (PV) とスナップショットの場所は異なるリージョンにあります。
解決方法
-
DataProtectionApplication
マニフェストのspec.snapshotLocations.velero.config.region
キーの値を編集して、スナップショットの場所が PV と同じリージョンにあるようにします。 -
新しい
Backup
CR を作成します。
4.4.6.2. バックアップ CR ステータスは進行中のままです
Backup
CR のステータスは InProgress
のフェーズのままであり、完了しません。
原因
バックアップが中断された場合は、再開することができません。
解決方法
Backup
CR の詳細を取得します。$ oc -n {namespace} exec deployment/velero -c velero -- ./velero \ backup describe <backup>
Backup
CR を削除します。$ oc delete backup <backup> -n openshift-adp
進行中の
Backup
CR はファイルをオブジェクトストレージにアップロードしていないため、バックアップの場所をクリーンアップする必要はありません。-
新しい
Backup
CR を作成します。
4.4.7. Restic の問題
Restic を使用してアプリケーションのバックアップを作成すると、これらの問題が発生する可能性があります。
4.4.7.1. root_squash が有効になっている NFS データボリュームの Restic パーミッションエラー
Restic
Pod ログには、エラーメッセージ controller=pod-volume-backup error="fork/exec/usr/bin/restic: permission denied"
が表示されます。
原因
NFS データボリュームで root_squash
が有効になっている場合、Restic
は nfsnobody
にマッピングされ、バックアップを作成する権限がありません。
解決方法
この問題を解決するには、Restic
の補足グループを作成し、そのグループ ID を DataProtectionApplication
マニフェストに追加します。
-
NFS データボリューム上に
Restic
の補足グループを作成します。 -
NFS ディレクトリーに
setgid
ビットを設定して、グループの所有権が継承されるようにします。 次の例のように、
spec.configuration.restic.supplementalGroups
パラメーターおよびグループ ID をDataProtectionApplication
マニフェストに追加します。spec: configuration: restic: enable: true supplementalGroups: - <group_id> 1
- 1
- 補助グループ ID を指定します。
-
Restic
Pod が再起動し、変更が適用されるまで待機します。
4.4.7.2. Restic バックアップの復元 CR が "PartiallyFailed"、"Failed"、または "InProgress" のままである
Restic バックアップの Restore
CR は、PartiallyFailed
または Failed
ステータスで完了するか、InProgress
のままで完了しません。
ステータスが PartiallyFailed
または Failed
の場合、Velero
Pod ログにエラーメッセージ level=error msg="unable to successfully complete restic restores of pod's volumes"
が表示されます。
ステータスが InProgress
の場合、Restore
CR ログは使用できず、Restic
Pod ログにエラーは表示されません。
原因
DeploymentConfig
オブジェクト が Restore
Pod を再デプロイするため、Restore
CR が失敗します。
解決方法
ReplicationController
、DeploymentConfig
、およびTemplateInstances
リソースを除外するRestore
CR を作成します。$ velero restore create --from-backup=<backup> -n openshift-adp \ 1 --include-namespaces <namespace> \ 2 --exclude-resources replicationcontroller,deploymentconfig,templateinstances.template.openshift.io \ --restore-volumes=true
Restore
CR のステータスがCompleted
したことを確認します。$ oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'
ReplicationController
およびDeploymentConfig
リソースを含むRestore
CR を作成します。$ velero restore create --from-backup=<backup> -n openshift-adp \ --include-namespaces <namespace> \ --include-resources replicationcontroller,deploymentconfig \ --restore-volumes=true
Restore
CR のステータスがCompleted
したことを確認します。$ oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'
バックアップリソースが復元されたことを確認します。
$ oc get all -n <namespace>
4.4.7.3. バケットが空になった後に、Restic Backup CR を再作成することはできない
名前空間の Restic Backup
CR を作成し、S3 バケットを空にしてから、同じ名前空間の Backup
CR を再作成すると、再作成された Backup
CR は失敗します。
velero
Pod ログには、エラーメッセージ msg="Error checking repository for stale locks"
が表示されます。
原因
オブジェクトストレージで Restic ディレクトリーが削除された場合、Velero は ResticRepository
マニフェストから Restic リポジトリーを作成しません。詳細については、(Velero issue 4421) を参照してください。
4.4.8. must-gather ツールの使用
must-gather
ツールを使用して、OADP カスタムリソースのログ、メトリクス、および情報を収集できます。
must-gather
データはすべてのカスタマーケースに割り当てられる必要があります。
次のデータ収集オプションを使用して、must-gather
ツールを実行できます。
-
完全な
must-gather
データ収集では、OADP Operator がインストールされているすべての名前空間について、Prometheus メトリック、Pod ログ、および Velero CR 情報が収集されます。 -
重要な
must-gather
データ収集では、Pod ログと Velero CR 情報を特定の期間 (たとえば、1 時間または 24 時間) 収集します。Prometheus メトリックと重複ログは含まれていません。 -
タイムアウト付きの
must-gather
データ収集。失敗したBackup
CR が多数ある場合は、データ収集に長い時間がかかる可能性があります。タイムアウト値を設定することでパフォーマンスを向上させることができます。 - Prometheus メトリクスデータダンプは、Prometheus によって収集されたメトリクスデータを含むアーカイブファイルをダウンロードします。
前提条件
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform クラスターにログインする必要があります。 -
OpenShift CLI (
oc
) がインストールされている必要があります。
手順
-
must-gather
データを保存するディレクトリーに移動します。 次のデータ収集オプションのいずれかに対して、
oc adm must-gather
コマンドを実行します。Prometheus メトリックを含む、完全な
must-gather
データ収集:$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0
データは
must-gather/must-gather.tar.gz
として保存されます。このファイルを Red Hat カスタマーポータル で作成したサポートケースにアップロードすることができます。Prometheus メトリックを使用しない、特定の期間の必須の
must-gather
データ収集:$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_<time>_essential 1
- 1
- 期間を時間単位で指定します。許可される値は、
1h
、6h
、24h
、72h
、またはall
です。たとえば、gather_1h_essential
またはgather_all_essential
です。
タイムアウト付きの
must-gather
データ収集:$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_with_timeout <timeout> 1
- 1
- タイムアウト値を秒単位で指定します。
Prometheus メトリクスデータダンプ:
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_metrics_dump
この操作には長時間かかる場合があります。データは
must-gather/metrics/prom_data.tar.gz
として保存されます。
Prometheus コンソールを使用したメトリクスデータの表示
Prometheus コンソールでメトリックデータを表示できます。
手順
prom_data.tar.gz
ファイルを解凍します。$ tar -xvzf must-gather/metrics/prom_data.tar.gz
ローカルの Prometheus インスタンスを作成します。
$ make prometheus-run
このコマンドでは、Prometheus URL が出力されます。
出力
Started Prometheus on http://localhost:9090
- Web ブラウザーを起動して URL に移動し、Prometheus Web コンソールを使用してデータを表示します。
データを確認した後に、Prometheus インスタンスおよびデータを削除します。
$ make prometheus-cleanup