4.19. Velero 和准入 Webhook 的问题


Velero 在恢复过程中解决准入 Webhook 问题的能力有限。如果您的工作负载带有准入 webhook,您可能需要使用额外的 Velero 插件或更改如何恢复工作负载。

通常,带有准入 Webhook 的工作负载需要您首先创建特定类型的资源。如果您的工作负载具有子资源,因为准入 webhook 通常阻止子资源,则会出现这种情况。

例如,创建或恢复顶层对象,如 service.serving.knative.dev 通常会自动创建子资源。如果您首先这样做,则不需要使用 Velero 创建和恢复这些资源。这可避免由 Velero 可使用的准入 Webhook 阻断子资源的问题。

4.19.1. 为使用准入 webhook 的 Velero 备份恢复临时解决方案

对于使用准入 webhook 的几种类型的 Velero 备份,您需要额外的步骤来恢复资源。

4.19.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
    Copy to clipboard

4.19.1.2. 恢复 IBM AppConnect 资源

如果您使用 Velero 恢复具有准入 webhook 的 IBM® AppConnect 资源时遇到问题,您可以在此过程中运行检查。

流程

  1. 检查集群中是否有 kind: MutatingWebhookConfiguration 的变异准入插件:

    $ oc get mutatingwebhookconfigurations
    Copy to clipboard
  2. 检查每个 kind: MutatingWebhookConfiguration 的 YAML 文件,以确保其没有规则块创建存在问题的对象。如需更多信息,请参阅官方 Kubernetes 文档
  3. 检查在备份时使用的 type: Configuration.appconnect.ibm.com/v1beta1 中的 spec.version 被已安装的 Operator 支持。

4.19.2. OADP 插件的已知问题

以下章节介绍了 OpenShift API for Data Protection (OADP) 插件中的已知问题:

4.19.2.1. 因为缺少 secret,Velero 插件在镜像流备份过程中会出现错误

当在数据保护应用程序(DPA)范围外管理备份和备份存储位置(BSL)时,OADP 控制器,这意味着 DPA 协调不会创建相关的 oadp-<bsl_name>-<bl_provider>-registry-secret

当备份运行时,OpenShift Velero 插件在镜像流备份中出现错误,并显示以下错误:

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…
Copy to clipboard
4.19.2.1.1. 临时解决方案以避免出现错误

要避免 Velero 插件 panic 错误,请执行以下步骤:

  1. 使用相关标签标记自定义 BSL:

    $ oc label backupstoragelocations.velero.io <bsl_name> app.kubernetes.io/component=bsl
    Copy to clipboard
  2. 在标记 BSL 后,等待 DPA 协调。

    注意

    您可以通过对 DPA 本身进行任何更改来强制进行协调。

  3. 当 DPA 协调时,确认相关的 oadp-<bsl_name>-<bsl_provider>-registry-secret 已被填充到其中:

    $ oc -n openshift-adp get secret/oadp-<bsl_name>-<bsl_provider>-registry-secret -o json | jq -r '.data'
    Copy to clipboard

4.19.2.2. OpenShift ADP Controller 分段错误

如果您在同时启用了 cloudstoragerestic 的情况下配置 DPA,openshift-adp-controller-manager pod 会无限期重复崩溃和重启过程,直到 pod 出现一个崩溃循环分段错误为止。

您只能定义 velerocloudstorage,它们是互斥的字段。

  • 如果您同时定义了 velerocloudstorageopenshift-adp-controller-manager 会失败。
  • 如果 velerocloudstorage 都没有定义,openshift-adp-controller-manager 也将失败。

有关此问题的更多信息,请参阅 OADP-1054

4.19.2.2.1. OpenShift ADP Controller 分段错误临时解决方案

在配置一个 DPA 时,您必须定义 velerocloudstorage。如果您在 DPA 中同时定义了这两个 API,openshift-adp-controller-manager pod 会失败,并显示崩溃循环分段错误。

4.19.3. Velero 插件返回 "received EOF, stop recv loop" 信息

注意

Velero 插件作为单独的进程启动。当 Velero 操作完成后,无论是否成功,它们都会退出。接收到 received EOF, stopping recv loop 消息表示插件操作已完成。这并不意味着发生了错误。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat, Inc.