This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.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 和容器网络的 Kubernetes 集群 v1.16 或更高版本。
-
您已在本地安装了
kubectl。
流程
- 打开浏览器,进入到 Verleo 网站上的"安装 CLI"。
- 按照 macOS、GitHub 或 Windows 的适当流程。
根据以下表,下载适用于 OADP 版本的 Velero 版本:
Expand 表 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'
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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>
$ oc describe <velero_cr> <cr_name>
Velero pod 日志
使用 oc logs 命令检索 Velero pod 日志:
oc logs pod/<velero>
$ oc logs pod/<velero>
Velero pod 调试日志
您可以在 DataProtectionApplication 资源中指定 Velero 日志级别,如下例所示。
这个选项可从 OADP 1.0.3 开始。
可用的 logLevel 值如下:
-
trace -
debug -
info -
warning -
错误 -
fatal -
panic
对于多数日志,建议使用 debug。
4.4.4. 使用 Velero CLI 工具调试 Velero 资源 复制链接链接已复制到粘贴板!
您可以调试 Backup 和 Restore 自定义资源(CR)并使用 Velero CLI 工具检索日志。
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_restore_cr> <command> <cr_name>
示例
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
$ 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
$ 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_restore_cr> describe <cr_name>
示例
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
$ 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 \
<backup_restore_cr> logs <cr_name>
示例
oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
4.4.5. 安装问题 复制链接链接已复制到粘贴板!
在安装数据保护应用程序时,您可能会遇到使用无效目录或不正确的凭证导致的问题。
4.4.5.1. 备份存储包含无效目录 复制链接链接已复制到粘贴板!
Velero pod 日志显示错误消息,备份存储包含无效的顶级目录。
原因
对象存储包含不是 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 provider in chain。
原因
用于创建 Secret 对象的 credentials-velero 文件会错误地格式化。
解决方案
确保 credentials-velero 文件已正确格式化,如下例所示:
credentials-velero 文件示例
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
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 相同的区域。 -
创建新的
BackupCR。
4.4.6.2. 备份 CR 状态在进行中 复制链接链接已复制到粘贴板!
Backup CR 的状态保留在 InProgress 阶段,且未完成。
原因
如果备份中断,则无法恢复。
解决方案
检索
BackupCR 的详细信息:oc -n {namespace} exec deployment/velero -c velero -- ./velero \ backup describe <backup>$ oc -n {namespace} exec deployment/velero -c velero -- ./velero \ backup describe <backup>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
BackupCR:oc delete backup <backup> -n openshift-adp
$ oc delete backup <backup> -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您不需要清理备份位置,因为正在进行中的
BackupCR 没有上传文件到对象存储。-
创建新的
BackupCR。
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清单中,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定补充组 ID。
-
等待
Resticpod 重启,以便应用更改。
Restic 备份的 Restore CR 使用 PartiallyFailed 或 Failed 状态完成,或者保持 InProgress,且不完成。
如果状态是 PartiallyFailed 或 Failed,Velero pod 日志会显示错误消息,level=error msg="unable to successfully restic restore of pod 的 volumes"。
如果状态是 InProgress,Restore CR 日志不可用,且 Restic pod 日志中不会出现任何错误。
原因
DeploymentConfig 对象重新部署 Restore pod,从而导致 Restore CR 失败。
解决方案
创建一个
RestoreCR,它排除ReplicationController、DeploymentConfig和TemplateInstances资源:velero restore create --from-backup=<backup> -n openshift-adp \ --include-namespaces <namespace> \ --exclude-resources replicationcontroller,deploymentconfig,templateinstances.template.openshift.io \ --restore-volumes=true
$ velero restore create --from-backup=<backup> -n openshift-adp \1 --include-namespaces <namespace> \2 --exclude-resources replicationcontroller,deploymentconfig,templateinstances.template.openshift.io \ --restore-volumes=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
RestoreCR 的状态是否为Completed:oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'$ oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
RestoreCR,以包括ReplicationController和DeploymentConfig资源:velero restore create --from-backup=<backup> -n openshift-adp \ --include-namespaces <namespace> \ --include-resources replicationcontroller,deploymentconfig \ --restore-volumes=true
$ velero restore create --from-backup=<backup> -n openshift-adp \ --include-namespaces <namespace> \ --include-resources replicationcontroller,deploymentconfig \ --restore-volumes=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
RestoreCR 的状态是否为Completed:oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'$ oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证备份资源是否已恢复:
oc get all -n <namespace>
$ oc get all -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.7.3. 在存储桶被强制后重新创建 Restic Backup CR 复制链接链接已复制到粘贴板!
如果您为命名空间创建 Restic Backup CR,请清空 S3 存储桶,然后为同一命名空间重新创建 Backup CR,重新创建的 Backup CR 会失败。
velero pod 日志显示错误消息 msg="Error check 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 metrics、pod 日志和 Velero CR 信息。 -
基本的
must-gather数据收集在特定持续时间内收集 pod 日志和 Velero CR 信息,例如一小时或 24 小时。Prometheus 指标和重复日志不包含在内。 -
使用超时的
must-gather数据收集。如果有许多BackupCR 失败,则数据收集需要很长时间。您可以通过设置超时值来提高性能。 - Prometheus 指标数据转储下载包含 Prometheus 收集的数据的存档文件。
先决条件
-
您必须使用具有
cluster-admin角色的用户登录到 OpenShift Container Platform 集群。 -
已安装 OpenShift CLI (
oc)。
流程
-
进入存储
must-gather数据的目录。 为以下数据收集选项之一运行
oc adm must-gather命令:完整的
must-gather数据收集,包括 Prometheus 指标:oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 数据保存为
must-gather/must-gather.tar.gz。您可以将此文件上传到红帽客户门户网站中的支持问题单中。特定持续时间内,基本
must-gather数据收集功能不进行 Prometheus 指标:oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_<time>_essential
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_<time>_essential1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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>
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_with_timeout <timeout>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 以秒为单位指定超时值。
Prometheus 指标数据转储:
oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_metrics_dump
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_metrics_dumpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此操作可能需要很长时间。数据保存为
must-gather/metrics/prom_data.tar.gz。
使用 Prometheus 控制台查看指标数据
您可以使用 Prometheus 控制台查看指标数据。
流程
解压缩
prom_data.tar.gz文件:tar -xvzf must-gather/metrics/prom_data.tar.gz
$ tar -xvzf must-gather/metrics/prom_data.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建本地 Prometheus 实例:
make prometheus-run
$ make prometheus-runCopy to Clipboard Copied! Toggle word wrap Toggle overflow 命令输出 Prometheus URL。
输出
Started Prometheus on http://localhost:9090
Started Prometheus on http://localhost:9090Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动 Web 浏览器,再导航到 URL 以使用 Prometheus Web 控制台查看数据。
查看数据后,删除 Prometheus 实例和数据:
make prometheus-cleanup
$ make prometheus-cleanupCopy to Clipboard Copied! Toggle word wrap Toggle overflow