5.26. OADP 故障排除
5.26.1. 故障排除 复制链接链接已复制到粘贴板!
您可以使用以下方法排除 OADP 问题:
- 您可以使用 OpenShift CLI 工具或 Velero CLI 工具调试 Velero 自定义资源(CR)。Velero CLI 工具提供更详细的日志和信息。
- 调试 Velero 或 Restic pod 崩溃,这是因为缺少内存或 CPU 导致的。参阅因为缺少内存或 CPU 导致 pod 崩溃。
- 根据恢复使用 admission webhook 的 Velero 备份的临时解决方案的内容对 Velero 和 admission webhook 进行故障排除。
- 检查 OADP 安装问题, OADP Operator 问题, backup 和 restore CR 问题, 和 Restic 问题.
- 使用可用的 OADP 超时 来减少错误、重试或失败。
-
运行
DataProtectionTest(DPT) 自定义资源来验证备份存储桶配置,并检查 PVC 的 CSI 快照就绪状态。 -
使用
must-gather工具收集日志和 CR 信息。 - 通过 OADP 监控来监控和分析工作负载性能。
5.26.2. Velero CLI 工具 复制链接链接已复制到粘贴板!
您可以使用以下选项获取 velero CLI 工具:
-
下载
veleroCLI 工具 -
访问集群中的 Velero 部署中的
velero二进制文件
5.26.2.1. 下载 Velero CLI 工具 复制链接链接已复制到粘贴板!
您可以按照 Velero 文档页面中的说明下载并安装 Velero CLI 工具。该页包括以下选项的说明:
- 使用 Homebrew 的 macOS
- GitHub
- 使用 Chocolatey 的 Windows
先决条件
- 您可以访问启用了 DNS 和容器网络的 Kubernetes 集群 v1.16 或更高版本。
-
您已在本地安装了
kubectl。
流程
- 打开浏览器,进入到在 Velero 网站上的"安装 CLI"。
- 按照 macOS、GitHub 或 Windows 的适当流程。
- 下载适用于 OADP 和 OpenShift Container Platform 版本的 Velero 版本。
| OADP 版本 | Velero 版本 | OpenShift Container Platform 版本 |
|---|---|---|
| 1.3.0 | {velero-1.12} | 4.12-4.15 |
| 1.3.1 | {velero-1.12} | 4.12-4.15 |
| 1.3.2 | {velero-1.12} | 4.12-4.15 |
| 1.3.3 | {velero-1.12} | 4.12-4.15 |
| 1.3.4 | {velero-1.12} | 4.12-4.15 |
| 1.3.5 | {velero-1.12} | 4.12-4.15 |
| 1.4.0 | {velero-1.14} | 4.14-4.18 |
| 1.4.1 | {velero-1.14} | 4.14-4.18 |
| 1.4.2 | {velero-1.14} | 4.14-4.18 |
| 1.4.3 | {velero-1.14} | 4.14-4.18 |
| 1.5.0 | {velero-1.16} | 4.19 |
5.26.2.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
5.26.2.3. 使用 OpenShift CLI 工具调试 Velero 资源 复制链接链接已复制到粘贴板!
您可以使用 OpenShift CLI 工具检查 Velero 自定义资源(CR)和 Velero pod 日志来调试失败的备份或恢复。
流程
使用以下
oc describe命令,检索与Backup或RestoreCR 关联的警告和错误概述:oc describe <velero_cr> <cr_name>
$ oc describe <velero_cr> <cr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下
oc logs命令检索Veleropod 日志:oc logs pod/<velero>
$ oc logs pod/<velero>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
DataProtectionApplication资源中指定 Velero 日志级别,如下例所示。注意这个选项可从 OADP 1.0.3 开始。
Velero 日志级别文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可用的
logLevel值如下:-
trace -
debug -
info -
warning -
错误 -
fatal panic对于大多数日志,使用
infologLevel值。
5.26.2.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>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc exec命令示例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-2d8qlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下
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 \ --helpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下
velero logs命令检索Backup或RestoreCR 的日志: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>Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero logs命令示例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-x4lbfCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下
velero describe命令检索与Backup或RestoreCR 关联的警告和错误概述: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>Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero describe命令示例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-2d8qlCopy to Clipboard Copied! Toggle word wrap Toggle overflow velero describe请求的输出中会显示以下类型的恢复错误和警告:-
Velero: 与 Velero 本身操作相关的信息列表,例如:与连接到云相关的信息,读取备份文件等 -
集群:与备份和恢复集群范围的资源相关的消息列表 命名空间:与备份或恢复存储在命名空间中资源相关的消息列表这些类别中的一个或多个错误会导致
Restore操作接收PartiallyFailed而不是Completed状态。警告不会造成完成状态的更改。对这些恢复错误考虑以下内容:
-
对于特定于资源的错误,即
Cluster和Namespaces错误,restore describe --details输出包含了一个资源列表,其中包含 Velero 恢复的所有资源。对于具有此类错误的任何资源,请检查资源是否实际位于集群中。 如果存在
Velero错误,但没有特定于资源的错误,在describe命令的输出中没有完成恢复,且没有恢复工作负载中的实际问题。在这种情况下,请仔细验证部署后应用程序。例如,如果输出包含
PodVolumeRestore或节点代理相关的错误,请检查PodVolumeRestores和DataDownloads的状态。如果其中任何失败或仍在运行,则卷数据可能已被完全恢复。
5.26.3. 因内存不足或 CPU 造成 pod 崩溃或重启 复制链接链接已复制到粘贴板!
如果 Velero 或 Restic pod 因为缺少内存或 CPU 而导致崩溃,您可以为其中任何一个资源设置特定的资源请求。资源请求字段的值必须遵循与 Kubernetes 资源要求相同的格式。
如果您没有指定 configuration.velero.podConfig.resourceAllocations 或 configuration.restic.podConfig.resourceAllocations,请参阅 Velero 或 Restic pod 的以下默认 resources 规格配置:
requests: cpu: 500m memory: 128Mi
requests:
cpu: 500m
memory: 128Mi
5.26.3.1. 为 Velero pod 设置资源请求 复制链接链接已复制到粘贴板!
您可以使用 oadp_v1alpha1_dpa.yaml 文件中的 configuration.velero.podConfig.resourceAllocations 规格字段为 Velero pod 设置特定的资源请求。
流程
在 YAML 文件中设置
cpu和memory资源请求:Velero 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 列出的
resourceAllocations用于平均使用。
5.26.3.2. 为 Restic pod 设置资源请求 复制链接链接已复制到粘贴板!
您可以使用 configuration.restic.podConfig.resourceAllocations specification 字段为 Restic pod 设置特定的资源请求。
在 OADP 1.5.0 中,configuration.restic.podConfig.resourceAllocations specification 字段从 Data Protection Application (DPA) 中删除。使用 nodeAgent 部分,将 uploaderType 字段设置为 Kopia 而不是 Restic。
流程
在 YAML 文件中设置
cpu和memory资源请求:Restic 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 列出的
resourceAllocations用于平均使用。
5.26.3.3. 为节点Agent pod 设置资源请求 复制链接链接已复制到粘贴板!
您可以使用 configuration.nodeAgent.podConfig.resourceAllocations 规格字段为 nodeAgent pod 设置特定的资源请求。
在 OADP 1.5.0 中,configuration.restic.podConfig.resourceAllocations specification 字段从 Data Protection Application (DPA) 中删除。使用 nodeAgent 部分,将 uploaderType 字段设置为 Kopia 而不是 Restic。
流程
在 YAML 文件中设置
cpu和memory资源请求:nodeAgent.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 DPA CR:
oc create -f nodeAgent.yaml
$ oc create -f nodeAgent.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用以下命令验证
nodeAgentpod 是否正在运行:oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过描述其中一个
nodeAgentpod 来检查资源请求:oc describe pod node-agent-hbj9l | grep -C 5 Requests
$ oc describe pod node-agent-hbj9l | grep -C 5 RequestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.4. 为使用准入 webhook 的 Velero 备份恢复临时解决方案 复制链接链接已复制到粘贴板!
Velero 在恢复过程中解决准入 Webhook 问题的能力有限。如果您的工作负载带有准入 webhook,您可能需要使用额外的 Velero 插件或更改如何恢复工作负载。
通常,带有准入 Webhook 的工作负载需要您首先创建特定类型的资源。如果您的工作负载具有子资源,因为准入 webhook 通常阻止子资源,则会出现这种情况。
例如,创建或恢复顶层对象,如 service.serving.knative.dev 通常会自动创建子资源。如果您首先这样做,则不需要使用 Velero 创建和恢复这些资源。这可避免由 Velero 可使用的准入 Webhook 阻断子资源的问题。
Velero 插件作为单独的进程启动。当 Velero 操作完成后,无论是否成功,它们都会退出。接收到 received EOF, stopping recv loop 消息表示插件操作已完成。这并不意味着发生了错误。
5.26.4.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
$ velero restore <restore_name> \ --from-backup=<backup_name> --include-resources \ service.serving.knavtive.devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.4.2. 恢复 IBM AppConnect 资源 复制链接链接已复制到粘贴板!
如果您使用 Velero 恢复具有准入 webhook 的 IBM® AppConnect 资源时遇到问题,您可以在此过程中运行检查。
流程
输入/运行以下命令,检查集群中是否有
kind: MutatingWebhookConfiguration的变异准入插件:oc get mutatingwebhookconfigurations
$ oc get mutatingwebhookconfigurationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
检查每个
kind: MutatingWebhookConfiguration的 YAML 文件,以确保其没有规则块创建存在问题的对象。如需更多信息,请参阅官方 Kubernetes 文档。 -
检查在备份时使用的
type: Configuration.appconnect.ibm.com/v1beta1中的spec.version被已安装的 Operator 支持。
5.26.4.3. 避免 Velero 插件 panic 错误 复制链接链接已复制到粘贴板!
缺少 secret 可能会导致 Velero 插件在镜像流备份过程中出现 panic 错误。
当备份和 Backup Storage Location (BSL) 在 Data Protection Application (DPA) 之外进行管理时,OADP 控制器不会创建相关的 oadp-<bsl_name>-<bsl_provider>-registry-secret 参数。
在备份操作过程中,OpenShift Velero 插件在 镜像流 备份上出现 panic,并显示以下错误:
024-02-27T10:46:50.028951744Z time="2024-02-27T10:46:50Z" level=error msg="Error backing up item" backup=openshift-adp/<backup name> error="error executing custom action (groupResource=imagestreams.image.openshift.io, namespace=<BSL Name>, name=postgres): rpc error: code = Aborted desc = plugin panicked: runtime error: index out of range with length 1, stack trace: goroutine 94…
024-02-27T10:46:50.028951744Z time="2024-02-27T10:46:50Z" level=error msg="Error backing up item"
backup=openshift-adp/<backup name> error="error executing custom action (groupResource=imagestreams.image.openshift.io,
namespace=<BSL Name>, name=postgres): rpc error: code = Aborted desc = plugin panicked:
runtime error: index out of range with length 1, stack trace: goroutine 94…
使用以下临时解决方案来避免 Velero 插件 panic 错误。
流程
运行以下命令,使用相关标签标记自定义 BSL:
oc label backupstoragelocations.velero.io <bsl_name> app.kubernetes.io/component=bsl
$ oc label backupstoragelocations.velero.io <bsl_name> app.kubernetes.io/component=bslCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在标记 BSL 后,等待 DPA 协调。
注意您可以通过对 DPA 本身进行任何更改来强制进行协调。
验证
在协调了 DPA 后,使用以下命令确认已创建了参数,并且正确的 registry 数据已填充到其中:
oc -n openshift-adp get secret/oadp-<bsl_name>-<bsl_provider>-registry-secret -o json | jq -r '.data'
$ oc -n openshift-adp get secret/oadp-<bsl_name>-<bsl_provider>-registry-secret -o json | jq -r '.data'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.4.4. OpenShift ADP Controller 分段错误临时解决方案 复制链接链接已复制到粘贴板!
如果您在同时启用了 cloudstorage 和 restic 的情况下配置 Data Protection Application (DPA),openshift-adp-controller-manager pod 会无限期重复崩溃和重启过程,直到 pod 出现一个崩溃循环分段错误为止。
在配置一个 DPA 时,定义 velero 或 cloudstorage。否则,openshift-adp-controller-manager pod 可能会因为以下设置而失败,并显示 crash loop 分段错误:
-
如果您同时定义了
velero和cloudstorage,openshift-adp-controller-manager会失败。 -
如果
velero和cloudstorage都没有定义,openshift-adp-controller-manager会失败。
有关此问题的更多信息,请参阅 OADP-1054。
5.26.5. OADP 安装问题 复制链接链接已复制到粘贴板!
在安装 Data Protection Application (DPA) 时,您可能会遇到使用无效目录或不正确的凭证导致的问题。
5.26.5.1. 解决备份存储中的无效目录 复制链接链接已复制到粘贴板!
对象存储包含不是 Velero 目录的顶级目录。Velero pod 日志显示以下错误信息:
Backup storage contains invalid top-level directories.
Backup storage contains invalid top-level directories.
流程
-
如果对象存储不适用于 Velero,则必须通过设置
DataProtectionApplication清单中的spec.backupLocations.velero.objectStorage.prefix参数为存储桶指定一个前缀。
5.26.5.2. 解决不正确的 AWS 凭证 复制链接链接已复制到粘贴板!
如果用于创建 Secret 对象的 credentials-velero 文件被错误地格式化,则可能会出现多个错误,包括以下示例:
oadp-aws-registrypod 日志显示以下出错信息:`InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.`
`InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.`Copy to Clipboard Copied! Toggle word wrap Toggle overflow Veleropod 日志显示以下错误信息:NoCredentialProviders: no valid providers in chain.
NoCredentialProviders: no valid providers in chain.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
确保
credentials-velero文件已正确格式化,如下例所示:credentials-velero文件示例[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[default]1 aws_access_key_id=AKIAIOSFODNN7EXAMPLE2 aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.6. OADP Operator 问题 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) Operator 可能会遇到它无法解决的问题。
5.26.6.1. 解决 OADP Operator 的静默失败 复制链接链接已复制到粘贴板!
OADP Operator 的 S3 存储桶可能为空,但在运行 oc get po -n <oadp_operator_namespace> 命令时,您会看到 Operator 的状态变为 Running。
在这种情况下,Operator 被认为有静默地失败,因为它错误地报告它正在运行。这个问题是因为云凭证提供的权限不足。
要解决这个问题,检索备份存储位置列表 (BSL),并检查每个 BSL 的清单是否有凭证问题。
流程
使用 OpenShift 或 Velero 命令行界面(CLI)检索 BSLs 列表:
使用 OpenShift CLI (
oc) 检索 BSLs 列表:oc get backupstoragelocations.velero.io -A
$ oc get backupstoragelocations.velero.io -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
veleroCLI 检索 BSLs 列表:velero backup-location get -n <oadp_operator_namespace>
$ velero backup-location get -n <oadp_operator_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用上一步中的 BSLs 列表,并运行以下命令来检查每个 BSL 的清单中的错误:
oc get backupstoragelocations.velero.io -n <namespace> -o yaml
$ oc get backupstoragelocations.velero.io -n <namespace> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 结果示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.7. OADP 超时 复制链接链接已复制到粘贴板!
通过扩展超时,可以允许复杂的或资源密集型的进程在没有预先终止的情况下成功完成。此配置可减少错误、重试或失败。
确保您在扩展超时设置时符合正常的逻辑,,以便不会因为设置的超时时间太长导致隐藏了底层存在的问题。考虑并监控满足进程需求和整体系统性能的适当超时值。
以下 OADP 超时演示了如何和何时实现这些参数的说明:
5.26.7.1. 实施 restic 超时 复制链接链接已复制到粘贴板!
spec.configuration.nodeAgent.timeout 参数定义 Restic 超时。默认值为 1h。
在以下情况下,使用 nodeAgent 部分中的 Restic timeout 参数:
- 对总 PV 数据使用量大于 500GB 的 Restic 备份。
如果备份超时并显示以下错误:
level=error msg="Error backing up item" backup=velero/monitoring error="timed out waiting for all PodVolumeBackups to complete"
level=error msg="Error backing up item" backup=velero/monitoring error="timed out waiting for all PodVolumeBackups to complete"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
编辑
DataProtectionApplication自定义资源(CR)清单的spec.configuration.nodeAgent.timeout块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.7.2. 实施 velero 资源超时 复制链接链接已复制到粘贴板!
resourceTimeout 定义在超时发生前等待 Velero 资源的时间,如等待 Velero 自定义资源定义 (CRD)可用、volumeSnapshot 删除和存储库可用。默认值为 10m。
在以下情况下使用 resourceTimeout :
对总 PV 数据使用量大于 1TB 的备份。当在将备份标记为完成前,Velero 尝试清理或删除 Container Storage Interface (CSI)快照时使用此参数作为超时值。
- 这个清理过程的一个子任务会尝试修补 VSC,此超时可用于该任务。
- 要创建或确保一个备份存储库已准备好用于 Restic 或 Kopia 的基于文件系统的备份。
- 在从备份中恢复自定义资源 (CR) 或资源前,检查集群中的 Velero CRD 是否可用。
流程
编辑
DataProtectionApplicationCR 清单的spec.configuration.velero.resourceTimeout块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.7.2.1. 实施 velero 默认项目操作超时 复制链接链接已复制到粘贴板!
defaultItemOperationTimeout 设置定义在超时前在异步 BackupItemActions 和 RestoreItemActions 上等待的时长。默认值为 1h。
在以下情况下使用 defaultItemOperationTimeout :
- 只有 Data Mover 1.2.x。
- 要指定一个特定备份或恢复应等待异步操作完成的时间长度。在 OADP 功能上下文中,这个值用于涉及 Container Storage Interface (CSI) Data Mover 功能的异步操作。
-
当使用
defaultItemOperationTimeout在 Data Protection Application (DPA) 中定义defaultItemOperationTimeout时,它适用于备份和恢复操作。您可以使用itemOperationTimeout来只定义这些 CR 的备份过程或恢复过程,如以下 "Item operation timeout - restore" 和 "Item operation timeout - backup" 部分所述。
流程
编辑
DataProtectionApplicationCR 清单的spec.configuration.velero.defaultItemOperationTimeout块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.7.3. 实施 Data Mover 超时 复制链接链接已复制到粘贴板!
timeout 是一个用户提供的、完成 VolumeSnapshotBackup 和 VolumeSnapshotRestore 的超时值。默认值为 10m。
在以下情况下使用 Data Mover timeout :
-
如果创建
VolumeSnapshotBackups(VSBs) 和VolumeSnapshotRestores(VSR),则会在 10 分钟后超时。 -
对于总 PV 数据使用量超过 500GB 的大型环境。设置
1h的超时时间。 -
使用
VolumeSnapshotMover(VSM) 插件。 - 只适用于 OADP 1.1.x。
流程
编辑
DataProtectionApplicationCR 清单的spec.features.dataMover.timeout块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.7.4. 实现 CSI 快照超时 复制链接链接已复制到粘贴板!
CSISnapshotTimeout 指定,在创建过程返回超时错误前,需要等待 CSI VolumeSnapshot 状态变为 ReadyToUse 的时间。默认值为 10m。
在以下情况下使用 CSISnapshotTimeout :
- 使用 CSI 插件。
- 对于非常大型的存储卷,进行快照的时间可能会超过 10 分钟。如果在日志中出现超时信息,请调整此超时设置。
通常,不需要调整 CSISnapshotTimeout,因为默认设置已考虑到大型存储卷的情况。
流程
编辑
BackupCR 清单的spec.csiSnapshotTimeout块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.7.5. 实施项目操作超时 - 恢复 复制链接链接已复制到粘贴板!
ItemOperationTimeout 设置用于指定等待 RestoreItemAction 操作的时间。默认值为 1h。
在以下情况下,使用 restore ItemOperationTimeout :
- 只有 Data Mover 1.2.x。
-
对于 Data Mover,上传到
BackupStorageLocation或从其中下载。如果在达到超时时没有完成恢复操作,它将标记为失败。如果因为存储卷太大出现超时并导致数据 Data Mover 操作失败,则可能需要增加这个超时设置。
流程
编辑
RestoreCR 清单的Restore.spec.itemOperationTimeout块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.7.6. 实施项目操作超时 - 备份 复制链接链接已复制到粘贴板!
ItemOperationTimeout 设置指定用于等待异步 BackupItemAction 操作的时间。默认值为 1h。
在以下情况下,使用 backup ItemOperationTimeout :
- 只有 Data Mover 1.2.x。
-
对于 Data Mover,上传到
BackupStorageLocation或从其中下载。如果在达到超时时没有完成备份操作,它将标记为失败。如果因为存储卷太大出现超时并导致数据 Data Mover 操作失败,则可能需要增加这个超时设置。
流程
编辑
BackupCR 清单的Backup.spec.itemOperationTimeout块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.8. 备份和恢复 CR 问题 复制链接链接已复制到粘贴板!
您可能会遇到以下 Backup 和 Restore 自定义资源 (CR) 的常见问题。
- 备份 CR 无法检索卷
- 备份 CR 状态在进行中
-
备份 CR 状态处于
PartiallyFailedphase/state/etc
5.26.8.1. 备份 CR 无法检索卷的故障排除问题 复制链接链接已复制到粘贴板!
如果持久性卷 (PV) 和快照位置位于不同的区域,则 Backup 自定义资源 (CR) 会显示以下错误信息:
错误示例
InvalidVolume.NotFound: The volume ‘vol-xxxx’ does not exist.
InvalidVolume.NotFound: The volume ‘vol-xxxx’ does not exist.
流程
-
编辑
DataProtectionApplication清单中的spec.snapshotLocations.velero.config.region键的值,使快照位置位于与 PV 相同的区域。 -
创建新的
BackupCR。
5.26.8.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 backups.velero.io <backup> -n openshift-adp
$ oc delete backups.velero.io <backup> -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您不需要清理备份位置,因为正在进行的
BackupCR 没有上传文件到对象存储。-
创建新的
BackupCR。 运行以下命令查看 Velero 备份详情:
velero backup describe <backup_name> --details
$ velero backup describe <backup_name> --detailsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.8.3. 对备份 CR 状态部分失败的故障进行排除 复制链接链接已复制到粘贴板!
在没有 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
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
流程
运行以下命令来删除
BackupCR:oc delete backups.velero.io <backup> -n openshift-adp
$ oc delete backups.velero.io <backup> -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果需要,清理
BackupStorageLocation资源中保存的数据以释放空间。 运行以下命令,将
velero.io/csi-volumesnapshot-class=true标签应用到VolumeSnapshotClass对象:oc label volumesnapshotclass/<snapclass_name> velero.io/csi-volumesnapshot-class=true
$ oc label volumesnapshotclass/<snapclass_name> velero.io/csi-volumesnapshot-class=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
创建新的
BackupCR。
5.26.9. Restic 问题 复制链接链接已复制到粘贴板!
在使用 Restic 备份应用程序时,您可能会遇到这些问题。
-
启用了
root_squashesource/parameter 的 NFS 数据卷的 Restic 权限错误 -
在存储桶被清空后,无法重新创建 Restic
BackupCR - 因为 pod 安全准入 (PSA) 策略有改变,Restic 恢复在 OpenShift Container Platform 4.14 上部分失败
5.26.9.1. NFS 数据卷的 Restic 权限错误故障排除 复制链接链接已复制到粘贴板!
如果您的 NFS 数据卷启用了 root_squash 参数,Restic 映射设置为 nfsnobody 值,且没有创建备份的权限,Restic 的 pod 日志会显示以下错误信息:
错误示例
controller=pod-volume-backup error="fork/exec/usr/bin/restic: permission denied".
controller=pod-volume-backup error="fork/exec/usr/bin/restic: permission denied".
您可以通过为 Restic 创建补充组并将组 ID 添加到 DataProtectionApplication 清单中来解决这个问题。
流程
-
在 NFS 数据卷中为
Restic创建补充组。 -
在 NFS 目录上设置
setgid位,以便继承组所有权。 将
spec.configuration.nodeAgent.supplementalGroups参数和组 ID 添加到DataProtectionApplication清单中,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定补充组 ID。
-
等待
Resticpod 重启,以便应用更改。
5.26.9.2. 对在存储桶被禁止后无法重新创建 Restic Backup CR 的故障进行排除 复制链接链接已复制到粘贴板!
如果 Restic 目录从对象存储中删除,Velero 不会从 ResticRepository 清单重新创建或更新 Restic 仓库。如需更多信息,请参阅 Velero issue 4421。
如果您为命名空间创建 Restic Backup CR,请清空对象存储的存储桶,然后为同一命名空间重新创建 Backup CR,重新创建的 Backup CR 会失败。在本例中,velero pod 日志显示以下错误信息:
+ .sample 错误
stderr=Fatal: unable to open config file: Stat: The specified key does not exist.\nIs there a repository at the following location?
stderr=Fatal: unable to open config file: Stat: The specified key does not exist.\nIs there a repository at the following location?
流程
运行以下命令,从命名空间中删除相关的 Restic 存储库:
oc delete resticrepository openshift-adp <name_of_the_restic_repository>
$ oc delete resticrepository openshift-adp <name_of_the_restic_repository>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下错误日志中,
mysql-persistent是有问题的 Restic 存储库。存储库的名称会出现在其说明中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift Container Platform 4.14 强制执行一个 pod 安全准入 (PSA) 策略,该策略可能会在 Restic 恢复过程中阻止 pod 的就绪度。
如果创建 Pod 时找不到 SecurityContextConstraints (SCC) 资源,并且 pod 上的 PSA 策略没有设置为满足所需的标准,则 Pod 准入将被拒绝。
造成这个问题的原因是 Velero 资源恢复的顺序。
错误示例
流程
在 DPA 自定义资源 (CR) 中,检查或设置 Velero 服务器上的
restore-resource-priorities字段,以确保在资源列表的pod之前列出securitycontextconstraints:oc get dpa -o yaml
$ oc get dpa -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow DPA CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果您有一个现有的恢复资源优先级列表,请确保将现有列表与完整列表合并。
- 确保应用程序 pod 的安全标准一致(如为部署修复 PodSecurity Admission 警告 中所述)以防止部署警告。如果应用程序与安全标准不一致,无论 SCC 是什么,都可能会出现错误。
这个解决方案是临时的,永久解决方案正在讨论中。
5.26.10. OADP Data 包含测试 复制链接链接已复制到粘贴板!
DataProtectionTest (DPT) 是一个自定义资源 (CR),它提供验证 OADP 配置的框架。DPT CR 检查并报告以下参数信息:
- 将备份上传到对象存储的性能。
- 持久性卷声明的 CSI 快照就绪度。
- 存储桶配置,如加密和版本控制。
在 DPT CR 中使用此信息,您可以确保正确配置并正确配置您的数据保护环境,并根据设置配置执行。
5.26.10.1. OADP DataProtectionTest CR 规格字段 复制链接链接已复制到粘贴板!
您可以在 DataProtectionTest (DPT) 自定义资源 (CR) 中配置以下规格字段。
| 字段 | 类型 | 描述 |
|---|---|---|
|
| string |
在 |
|
| object |
|
|
| object | 配置,以运行到对象存储的上传速度测试。 |
|
| list | 持久性卷声明列表,对它们进行快照来验证快照的就绪度。 |
|
| 布尔值 |
即使状态为 |
|
| 布尔值 |
如果设置为 |
5.26.10.2. OADP DataProtectionTest CR 状态字段 复制链接链接已复制到粘贴板!
您可以使用以下 status 字段查看 DataProtectionTest (DPT) 自定义资源 (CR) 的状态:
| 字段 | 类型 | 描述 |
|---|---|---|
|
| string |
DPT CR 的当前阶段。值是 |
|
| timestamp | DPT CR 最后一次运行时的时间戳。 |
|
| object | 上传速度测试的结果。 |
|
| object | 有关存储桶加密和版本控制的信息。 |
|
| list | 每个持久性卷声明的快照测试结果。 |
|
| string |
快照聚合的传递/失败摘要。例如, |
|
| string | AWS S3 兼容存储桶供应商。例如,AWS、MinIO、Ceph。 |
|
| string | 如果 DPT CR 失败,错误消息。 |
5.26.10.3. 使用 DataProtectionTest 自定义资源 复制链接链接已复制到粘贴板!
您可以配置 DataProtectionTest (DPT) 自定义资源 (CR),然后运行 DPT CR 来验证 Container Storage Initiative (CSI) 快照就绪,并将性能上传到存储桶。
先决条件
-
已以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform 集群。 -
已安装 OpenShift CLI(
oc)。 - 已安装 OADP Operator。
-
您已创建了
DataProtectionApplication(DPA) CR。 - 您已配置了备份存储位置 (BSL) 来存储备份。
- 您有一个应用程序,并在单独的命名空间中运行持久性卷声明 (PVC)。
流程
为 DPT CR 创建清单文件,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 DPT CR:
oc create -f <dpt_file_name>
$ oc create -f <dpt_file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 DPT 清单的文件名。
验证
运行以下命令,验证 DPT CR 的阶段是否为
Complete:oc get dpt dpt-sample
$ oc get dpt dpt-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例如下:
NAME PHASE LASTTESTED UPLOADSPEED(MBPS) ENCRYPTION VERSIONING SNAPSHOTS AGE dpt-sample Complete 17m 546 AES256 Enabled 2/2 passed 17m
NAME PHASE LASTTESTED UPLOADSPEED(MBPS) ENCRYPTION VERSIONING SNAPSHOTS AGE dpt-sample Complete 17m 546 AES256 Enabled 2/2 passed 17mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 CSI 快照是否已就绪,数据上传测试是否成功:
oc get dpt dpt-sample -o yaml
$ oc get dpt dpt-sample -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.10.4. 通过配置备份存储位置规格来运行数据保护测试 复制链接链接已复制到粘贴板!
您可以通过指定备份存储位置 (BSL) 规格而不是 BSL 名称来配置 DataProtectionTest (DPT) 自定义资源( CR)。然后,运行 DPT CR 来验证 Container Storage Initiative (CSI) 快照就绪,数据上传性能到存储桶。
先决条件
-
已以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform 集群。 -
已安装 OpenShift CLI(
oc)。 - 已安装 OADP Operator。
-
您已创建了
DataProtectionApplication(DPA) CR。 - 您已配置存储桶来存储备份。
-
您已创建了
Secret对象来访问存储桶存储。 - 您有一个应用程序,并在单独的命名空间中运行持久性卷声明 (PVC)。
流程
为 DPT CR 创建清单文件,如下例所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 DPT CR:
oc create -f <dpt_file_name>
$ oc create -f <dpt_file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 DPT 清单的文件名。
验证
运行以下命令,验证 DPT CR 的阶段是否为
Complete:oc get dpt dpt-sample
$ oc get dpt dpt-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例如下:
NAME PHASE LASTTESTED UPLOADSPEED(MBPS) ENCRYPTION VERSIONING SNAPSHOTS AGE dpt-sample Complete 17m 546 AES256 Enabled 2/2 passed 17m
NAME PHASE LASTTESTED UPLOADSPEED(MBPS) ENCRYPTION VERSIONING SNAPSHOTS AGE dpt-sample Complete 17m 546 AES256 Enabled 2/2 passed 17mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.10.5. 在 Azure 对象存储上运行数据保护测试 复制链接链接已复制到粘贴板!
如果您在 Azure 对象存储上使用 OADP,则需要将 Azure STORAGE_ACCOUNT_ID 指定为 secret 对象的一部分。使用以下步骤在 Azure 集群上运行 DataProtectionTest (DPT) 自定义资源 (CR)。
先决条件
-
您已以具有
cluster-admin角色的用户身份登录到 Azure 集群。 -
已安装 OpenShift CLI(
oc)。 - 已安装 OADP Operator。
- 您已配置存储桶来存储备份。
- 您有一个应用程序,并在单独的命名空间中运行持久性卷声明 (PVC)。
流程
将
Storage Blob Data Contributor角色添加到 AzurestorageAccount对象,以避免 DPT 运行失败。运行以下命令:az role assignment create \ --assignee "$AZURE_CLIENT_ID" \ --role "Storage Blob Data Contributor" \ --scope "/subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP/providers/Microsoft.Storage/storageAccounts/$AZURE_STORAGE_ACCOUNT_ID"
$ az role assignment create \ --assignee "$AZURE_CLIENT_ID" \ --role "Storage Blob Data Contributor" \ --scope "/subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP/providers/Microsoft.Storage/storageAccounts/$AZURE_STORAGE_ACCOUNT_ID"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在终端中,导出 Azure 参数,并使用参数创建一个 secret 凭证文件,如下例所示。
要在 Azure 上运行 DPT CR,您需要在 secret 凭证文件中指定
STORAGE_ACCOUNT_ID参数。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
SecretCR,如下例所示:oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=<credentials_file_path>
$ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=<credentials_file_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下示例中显示的配置创建
DataProtectionApplication(DPA) CR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
Secret对象的名称。在本例中,名称是cloud-credentials-azure。
通过指定备份存储位置的名称 (BSL)、
VolumeSnapshotClass对象和持久性卷声明详情来创建 DPT CR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 运行 DPT CR 以验证快照是否就绪。
5.26.10.6. 对 DataProtectionTest 自定义资源进行故障排除 复制链接链接已复制到粘贴板!
在运行 DataProtectionTest (DPT) 自定义资源 (CR) 时,请使用下表来排除常见问题。
| 错误 | 原因 | 解决方案 |
|---|---|---|
|
DPT 处于 | 存储桶凭证或存储桶访问失败 |
检查 |
| 上传测试失败 |
不正确的 |
检查 |
| 快照测试失败 | CSI 快照控制器配置不正确 |
检查 |
| 未填充存储桶加密或版本 | 云供应商限制 | 并非所有对象存储供应商都会一致公开这些字段。 |
5.26.11. 使用 must-gather 工具 复制链接链接已复制到粘贴板!
您可以使用 must-gather 工具收集有关 OADP 自定义资源的日志和信息。must-gather 数据必须附加到所有客户案例。
must-gather 工具是一个容器,它不会一直运行。must-gather 命令会调用该工具并会运行几分钟。
5.26.11.1. 使用 must-gather 工具 复制链接链接已复制到粘贴板!
您可以使用以下选项运行 must-gather 工具。要使用一个选项,请在 must-gather 命令中添加与该选项对应的标记。
- 默认配置
-
此配置会为安装 OADP Operator 的所有命名空间收集 pod 日志、OADP 和
Velero自定义资源 (CR) 信息。 - Timeout(超时)
-
如果有许多
BackupCR 失败,则数据收集需要很长时间。您可以通过设置超时值来提高性能。 - 不安全的 TLS 连接
-
如果使用自定义 CA 证书,请使用带有不安全 TLS 连接的
must-gather工具。
must-gather 工具使用收集的信息生成 Markdown 输出文件。Markdown 文件位于集群目录中。
如需有关支持的标记的更多信息,请在 must-gather 工具中使用 help 标记,如下例所示:
oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather -h
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather -h
先决条件
-
已以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform 集群。 -
已安装 OpenShift CLI(
oc)。
流程
-
进入存储
must-gather数据的目录。 为以下数据收集选项之一运行
oc adm must-gather命令:要使用
must-gather工具的默认配置,请运行以下命令:oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 timeout 标志与
must-gather工具一起使用,请运行以下命令:oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather --request-timeout 1m
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather --request-timeout 1m1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在本例中,超时为 1 分钟。
要将不安全的 TLS 连接标记与
must-gather工具一起使用,请运行以下命令:oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather --skip-tls
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather --skip-tlsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要将不安全的 TLS 连接和
must-gather工具的超时标记结合使用,请运行以下命令:oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather --request-timeout 15s --skip-tls
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather --request-timeout 15s --skip-tls1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在本例中,超时为 15 秒。默认情况下,
--skip-tls标志值为false。将值设为true以允许不安全的 TLS 连接。
验证
-
验证 Markdown 输出文件是否在以下位置生成:
must-gather.local.89…054550/registry.redhat.io/oadp-mustgather-rhel9:v1.5-sha256-0…84/clusters/a4…86/oadp-must-gather-summary.md 通过在 Markdown 预览中打开文件来查看 Markdown 文件中的
must-gather数据。如需示例输出,请参考以下镜像:您可以将此输出文件上传到红帽客户门户网站中的支持问题单中。图 5.2. must-gather 工具的 markdown 输出示例
5.26.12. OADP 监控 复制链接链接已复制到粘贴板!
通过使用 OpenShift Container Platform 监控堆栈,用户和管理员可以有效地执行以下任务:
- 监控和管理集群
- 分析用户应用程序的工作负载性能
- 监控集群中运行的服务
- 当事件发生时接收警报
5.26.12.1. OADP 监控设置 复制链接链接已复制到粘贴板!
OADP Operator 利用 OpenShift Monitoring Stack 提供的 OpenShift User Workload Monitoring 从 Velero 服务端点检索指标。监控堆栈允许使用 OpenShift Metrics 查询前端创建用户定义的 Alerting Rules 或查询指标。
启用 User Workload Monitoring 后,可以配置和使用任何与 Prometheus 兼容的第三方 UI (如 Grafana)来视觉化 Velero 指标。
监控指标需要为用户定义的项目启用监控,并创建一个 ServiceMonitor 资源,以便从位于 openshift-adp 命名空间中的已启用的 OADP 服务端点中提取这些指标。
OADP 对 Prometheus 指标的支持以尽力提供,且不被支持。
有关设置监控堆栈的更多信息,请参阅配置用户工作负载监控。
先决条件
-
可以使用具有
cluster-admin权限的账户访问 OpenShift Container Platform 集群。 - 您已创建了集群监控配置映射。
流程
使用以下命令编辑
openshift-monitoring命名空间中的cluster-monitoring-configConfigMap对象:oc edit configmap cluster-monitoring-config -n openshift-monitoring
$ oc edit configmap cluster-monitoring-config -n openshift-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令在
data部分的config.yaml字段中添加或启用enableUserWorkload选项:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加这个选项或设置为
true
等待一段较短时间,检查以下组件是否在
openshift-user-workload-monitoring命名空间中运行来验证用户工作负载监控设置:oc get pods -n openshift-user-workload-monitoring
$ oc get pods -n openshift-user-workload-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
openshift-user-workload-monitoring中是否存在user-workload-monitoring-configConfigMap。如果存在,请跳过这个过程中的剩余步骤。oc get configmap user-workload-monitoring-config -n openshift-user-workload-monitoring
$ oc get configmap user-workload-monitoring-config -n openshift-user-workload-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Error from server (NotFound): configmaps "user-workload-monitoring-config" not found
Error from server (NotFound): configmaps "user-workload-monitoring-config" not foundCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 User Workload Monitoring 创建一个
user-workload-monitoring-configConfigMap对象,并将它保存为2_configure_user_workload_monitoring.yaml文件:输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令应用
2_configure_user_workload_monitoring.yaml文件:oc apply -f 2_configure_user_workload_monitoring.yaml
$ oc apply -f 2_configure_user_workload_monitoring.yaml configmap/user-workload-monitoring-config createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.26.12.2. 创建 OADP 服务监控器 复制链接链接已复制到粘贴板!
OADP 提供了一个 openshift-adp-velero-metrics-svc 服务,它会在配置 Data Protection Application (DPA) 时创建。用户工作负载监控服务监控器需要指向定义的服务。要获取有关该服务的详细信息,请完成以下步骤。
流程
确保
openshift-adp-velero-metrics-svc服务存在。它应包含app.kubernetes.io/name=velero标签,该标签用作ServiceMonitor对象的选择器。oc get svc -n openshift-adp -l app.kubernetes.io/name=velero
$ oc get svc -n openshift-adp -l app.kubernetes.io/name=veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE openshift-adp-velero-metrics-svc ClusterIP 172.30.38.244 <none> 8085/TCP 1h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE openshift-adp-velero-metrics-svc ClusterIP 172.30.38.244 <none> 8085/TCP 1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个与现有 service 标签匹配的
ServiceMonitorYAML 文件,并将文件保存为3_create_oadp_service_monitor.yaml。服务监控器在openshift-adp命名空间中创建,其中openshift-adp-velero-metrics-svc服务所在的位置。ServiceMonitor对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用
3_create_oadp_service_monitor.yaml文件:oc apply -f 3_create_oadp_service_monitor.yaml
$ oc apply -f 3_create_oadp_service_monitor.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
servicemonitor.monitoring.coreos.com/oadp-service-monitor created
servicemonitor.monitoring.coreos.com/oadp-service-monitor createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用 OpenShift Container Platform Web 控制台的 Administrator 视角确认新服务监控器处于 Up 状态:等待几分钟,使服务监控器到达 Up 状态。
-
进入到 Observe
Targets 页面。 -
确保没有选择 Filter,或选择了 User source,并在
Text搜索字段中输入openshift-adp。 验证服务监控器的 Status 的状态是否为 Up。
图 5.3. OADP 指标目标
-
进入到 Observe
5.26.12.3. 创建警报规则 复制链接链接已复制到粘贴板!
OpenShift Container Platform 监控堆栈使用 Alerting Rules 接收配置的警报。要为 OADP 项目创建 Alerting 规则,请使用用户工作负载监控提取的其中一个指标。
流程
使用示例
OADPBackupFailing警报创建一个PrometheusRuleYAML 文件,并将其保存为4_create_oadp_alert_rule.yaml:OADPBackupFailing警报示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,Alert 在以下情况下显示:
- 在过去 2 小时中,新的失败的备份数量大于 0,相同的状态至少持续了 5 分钟。
-
如果第一次增加的时间小于 5 分钟,则 Alert 将处于
Pending状态,之后它将进入Firing状态。
应用
4_create_oadp_alert_rule.yaml文件,该文件在openshift-adp命名空间中创建PrometheusRule对象:oc apply -f 4_create_oadp_alert_rule.yaml
$ oc apply -f 4_create_oadp_alert_rule.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
prometheusrule.monitoring.coreos.com/sample-oadp-alert created
prometheusrule.monitoring.coreos.com/sample-oadp-alert createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在触发 Alert 后,您可以使用以下方法查看它:
- 在 Developer 视角中,选择 Observe 菜单。
在 Observe
Alerting 菜单下的 Administrator 视角中,在 Filter 框中选择 User。否则,默认只会显示 Platform Alerts。 图 5.4. OADP 备份失败警报
5.26.12.4. 可用指标列表 复制链接链接已复制到粘贴板!
请参阅下表,了解由 OADP 提供的 Velero 指标参数以及它们的类型:
| 指标名称 | 描述 | 类型 |
|---|---|---|
|
| 备份的大小,以字节为单位 | 量表 |
|
| 当前存在的备份数量 | 量表 |
|
| 试图备份的总数 | 计数 |
|
| 成功备份的总数 | 计数 |
|
| 部分失败的备份总数 | 计数 |
|
| 失败备份的总数 | 计数 |
|
| 验证失败的备份总数 | 计数 |
|
| 完成备份所需的时间,以秒为单位 | Histogram |
|
|
指标 | 计数 |
|
|
指标 | 计数 |
|
|
指标 | 计数 |
|
| 试图备份删除的总数 | 计数 |
|
| 成功删除备份的总数 | 计数 |
|
| 删除失败的备份总数 | 计数 |
|
| 备份最后一次运行成功的时间,Unix 时间戳(以秒为单位) | 量表 |
|
| 备份的项目总数 | 量表 |
|
| 备份过程中遇到的错误总数 | 量表 |
|
| 警告备份的总数 | 计数 |
|
| 备份的最后状态。1 代表成功,0 代表失败 | 量表 |
|
| 当前存在的恢复数量 | 量表 |
|
| 尝试恢复的总数 | 计数 |
|
| 恢复失败验证的总数 | 计数 |
|
| 成功恢复的总数 | 计数 |
|
| 恢复部分失败的总数 | 计数 |
|
| 恢复的失败总数 | 计数 |
|
| 尝试的卷快照总数 | 计数 |
|
| 成功卷快照的总数 | 计数 |
|
| 失败的卷快照总数 | 计数 |
|
| CSI 试图卷快照的总数 | 计数 |
|
| CSI 成功卷快照总数 | 计数 |
|
| CSI 失败卷快照的总数 | 计数 |
5.26.12.5. 使用 Observe UI 查看指标 复制链接链接已复制到粘贴板!
您可以从 Administrator 或 Developer 视角查看 OpenShift Container Platform Web 控制台中的指标,该视角必须有权访问 openshift-adp 项目。
流程
进入到 Observe
Metrics 页面: 如果使用 Developer 视角,请按照以下步骤执行:
- 选择 Custom query,或者点 Show PromQL 链接。
- 输入查询并点 Enter。
如果使用 Administrator 视角,请在文本字段中输入表达式,然后选择 Run Queries。
图 5.5. OADP 指标查询