×

OpenShift 数据保护 API (OADP) 的发行说明描述了新功能和增强功能、已弃用的功能、产品建议、已知问题和已解决的问题。

有关 OADP 的更多信息,请参见 OpenShift 数据保护 API (OADP) 常见问题解答

OADP 1.4.1 发行说明

OpenShift 数据保护 API (OADP) 1.4.1 发行说明列出了新功能、已解决的问题和错误以及已知问题。

新功能

更新客户端 qps 和突发值的新 DPA 字段

您现在可以使用新的数据保护应用程序 (DPA) 字段来更改 Velero Server Kubernetes API 每秒查询数和突发值。新的 DPA 字段为spec.configuration.velero.client-qpsspec.configuration.velero.client-burst,两者默认值均为 100。OADP-4076

使用 Kopia 启用非默认算法

通过此更新,您现在可以在 Kopia 中配置哈希、加密和分割器算法,以选择非默认选项来优化不同备份工作负载的性能。

要配置这些算法,请设置 DataProtectionApplication (DPA) 配置的podConfig部分中velero pod 的env变量。如果未设置此变量,或选择了不受支持的算法,Kopia 将默认为其标准算法。OADP-4640

已解决的问题

现在可以成功恢复没有 Pod 的备份

以前,如果在没有 Pod 的情况下恢复备份并且StorageClass VolumeBindingMode设置为WaitForFirstConsumer,则会导致PartiallyFailed状态,并出现错误:fail to patch dynamic PV, err: context deadline exceeded。通过此更新,将跳过修补动态 PV,并且无需任何PartiallyFailed状态即可成功恢复备份。OADP-4231

PodVolumeBackup CR 现在显示正确的消息

以前,PodVolumeBackup自定义资源 (CR) 生成了错误的消息:get a podvolumebackup with status "InProgress" during the server starting, mark it as "Failed"。通过此更新,现在生成的消息为

found a podvolumebackup with status "InProgress" during the server starting,
mark it as "Failed".
现在可以使用 DPA 覆盖 imagePullPolicy

以前,OADP 将所有镜像的imagePullPolicy参数设置为Always。通过此更新,OADP 会检查每个镜像是否包含sha256sha512摘要,然后将其将imagePullPolicy设置为IfNotPresent;否则将imagePullPolicy设置为Always。您现在可以使用新的spec.containerImagePullPolicy DPA 字段覆盖此策略。OADP-4172

OADP Velero 现在可以在初始更新失败时重试更新恢复状态

以前,OADP Velero 无法更新已恢复的 CR 状态。这使得状态无限期地保持在InProgress状态。依赖备份和恢复 CR 状态来确定完成的组件将失败。通过此更新,恢复的 CR 状态将正确地进行到CompletedFailed状态。OADP-3227

成功恢复来自不同集群的 BuildConfig Build,没有任何错误

以前,当从不同集群执行BuildConfig Build 资源的恢复时,应用程序会在对内部镜像注册表的 TLS 验证中生成错误。生成的错误是failed to verify certificate: x509: certificate signed by unknown authority错误。通过此更新,可以成功地将BuildConfig构建资源恢复到不同的集群,而不会生成failed to verify certificate错误。OADP-4692

成功恢复空 PVC

以前,在恢复空持久卷声明 (PVC) 时,下载数据失败。它失败并显示以下错误

data path restore failed: Failed to run kopia restore: Unable to load
    snapshot : snapshot not found

通过此更新,在恢复空 PVC 时,数据下载将顺利完成,并且不会生成错误消息。OADP-3106

CSI 和 DataMover 插件中没有 Velero 内存泄漏

以前,使用 CSI 和 DataMover 插件会导致 Velero 内存泄漏。备份结束时,Velero 插件实例未被删除,内存泄漏会消耗内存,直到在 Velero pod 中生成Out of Memory (OOM) 条件。通过此更新,使用 CSI 和 DataMover 插件时不会出现 Velero 内存泄漏。OADP-4448

后挂钩操作不会在相关 PV 发布之前启动

以前,由于数据移动器操作的异步性质,在数据移动器持久卷声明 (PVC) 释放相关 Pod 的持久卷 (PV) 之前,可能会尝试进行后挂钩。这个问题会导致备份失败并显示PartiallyFailed状态。通过此更新,直到数据移动器 PVC 释放相关 PV 后才会启动后挂钩操作,从而消除了PartiallyFailed备份状态。OADP-3140

在名称超过 37 个字符的命名空间中,DPA 部署按预期工作

当您在命名空间中安装 OADP 运算符(名称超过 37 个字符)以创建新的 DPA 时,标记“cloud-credentials”Secret 会失败,并且 DPA 会报告以下错误

The generated label name is too long.

通过此更新,在命名空间名称超过 37 个字符的情况下,创建 DPA 不会失败。OADP-3960

通过覆盖超时错误成功完成恢复

之前,在大规模环境中,恢复操作会以Partiallyfailed状态结束,并出现以下错误:fail to patch dynamic PV, err: context deadline exceeded。通过此更新,resourceTimeout Velero 服务器参数用于覆盖此超时错误,从而实现成功恢复。OADP-4344

有关此版本中解决的所有问题的完整列表,请参阅Jira中的OADP 1.4.1 已解决的问题列表

已知问题

恢复 OADP 后,Cassandra 应用程序 Pod 会进入CrashLoopBackoff状态。

OADP 恢复后,Cassandra 应用程序 Pod 可能会进入CrashLoopBackoff状态。要解决此问题,请删除在恢复 OADP 后返回错误CrashLoopBackoff状态的StatefulSet Pod。然后,StatefulSet控制器会重新创建这些 Pod,并使其正常运行。OADP-4407

引用 ImageStream 的 Deployment 未正确恢复,导致 Pod 和卷内容损坏

在文件系统备份 (FSB) 恢复操作期间,引用ImageStreamDeployment资源未正确恢复。运行 FSB 的已恢复 Pod 和postHook会过早终止。

在恢复操作期间,OpenShift Container Platform 控制器会使用更新的ImageStreamTag哈希值更新Deployment资源中的spec.template.spec.containers[0].image字段。此更新会触发新 Pod 的滚动更新,从而终止velero运行 FSB 及其 post-hook 的 Pod。有关 image stream 触发器的更多信息,请参阅根据 image stream 更改触发更新

此问题的解决方法是分两步进行恢复。

  1. 例如,执行不包含Deployment资源的恢复

    $ velero restore create <RESTORE_NAME> \
      --from-backup <BACKUP_NAME> \
      --exclude-resources=deployment.apps
  2. 第一次恢复成功后,通过包含这些资源来执行第二次恢复,例如

    $ velero restore create <RESTORE_NAME> \
      --from-backup <BACKUP_NAME> \
      --include-resources=deployment.apps

OADP 1.4.0 版本说明

OpenShift 数据保护 API (OADP) 1.4.0 版本说明列出了已解决的问题和已知问题。

已解决的问题

恢复在 Red Hat OpenShift Service on AWS 4.16 中正常工作

之前,在恢复已删除的应用程序命名空间时,恢复操作在 Red Hat OpenShift Service on AWS 4.16 中部分失败,并出现resource name may not be empty错误。通过此更新,恢复在 Red Hat OpenShift Service on AWS 4.16 中按预期工作。OADP-4075

数据移动器备份在 Red Hat OpenShift Service on AWS 4.16 集群中正常工作

之前,Velero 使用的是早期版本的 SDK,其中不存在Spec.SourceVolumeMode字段。因此,数据移动器备份在 Red Hat OpenShift Service on AWS 4.16 集群的版本 4.2 的外部快照程序中失败。通过此更新,外部快照程序已升级到 7.0 及更高版本。因此,备份不会在 Red Hat OpenShift Service on AWS 4.16 集群中失败。OADP-3922

有关此版本中解决的所有问题的完整列表,请参阅Jira中的OADP 1.4.0 已解决的问题列表

已知问题

当未为 MCG 设置 checksumAlgorithm 时,备份失败

在对使用 Noobaa 作为备份位置的任何应用程序执行备份时,如果未设置checksumAlgorithm配置参数,则备份会失败。要解决此问题,如果未在备份存储位置 (BSL) 配置中提供checksumAlgorithm的值,则会添加一个空值。空值仅添加到使用数据保护应用程序 (DPA) 自定义资源 (CR) 创建的 BSL,如果使用任何其他方法创建 BSL,则不会添加此值。OADP-4274

有关此版本中所有已知问题的完整列表,请参阅Jira中的OADP 1.4.0 已知问题列表

升级说明

始终升级到下一个次要版本。**不要**跳过版本。要更新到更高版本,请一次只升级一个通道。例如,要从 OpenShift 数据保护 API (OADP) 1.1 升级到 1.3,请先升级到 1.2,然后再升级到 1.3。

OADP 1.3 到 1.4 的更改

Velero 服务器已从 1.12 版本更新到 1.14 版本。请注意,数据保护应用程序 (DPA) 没有更改。

这会更改以下内容:

  • velero-plugin-for-csi代码现在可在 Velero 代码中使用,这意味着插件不再需要init容器。

  • Velero 将客户端突发值和 QPS 默认值分别从 30 和 20 更改为 100 和 100。

  • velero-plugin-for-aws插件将BackupStorageLocation对象 (BSL) 中spec.config.checksumAlgorithm字段的默认值从""(不进行校验和计算)更新为CRC32算法。校验和算法类型已知仅适用于 AWS。一些 S3 提供商需要禁用md5sum,方法是将校验和算法设置为""。请与您的存储提供商确认md5sum算法的支持和配置。

    在 OADP 1.4 中,在 DPA 中为该配置创建的 BSL 的默认值为""。此默认值表示不检查md5sum,这与 OADP 1.3 一致。对于在 DPA 中创建的 BSL,请使用 DPA 中的spec.backupLocations[].velero.config.checksumAlgorithm字段进行更新。如果您的 BSL 在 DPA 外部创建,则可以使用 BSL 中的spec.config.checksumAlgorithm更新此配置。

备份 DPA 配置

必须备份当前的DataProtectionApplication(DPA) 配置。

步骤
  • 通过运行以下命令保存当前的 DPA 配置

    示例命令
    $ oc get dpa -n openshift-adp -o yaml > dpa.orig.backup

升级 OADP 运算符

升级 OpenShift 数据保护 API (OADP) 运算符时,请使用以下步骤。

步骤
  1. 将 OADP 运算符的订阅通道从stable-1.3更改为stable-1.4

  2. 等待运算符和容器更新并重新启动。

将 DPA 转换为新版本

要从 OADP 1.3 升级到 1.4,不需要进行数据保护应用程序 (DPA) 更改。

验证升级

使用以下步骤验证升级。

步骤
  1. 通过运行以下命令查看 OpenShift 数据保护 API (OADP) 资源来验证安装

    $ oc get all -n openshift-adp
    示例输出
    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/restic-9cq4q                                         1/1     Running   0          94s
    pod/restic-m4lts                                         1/1     Running   0          94s
    pod/restic-pv4kr                                         1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    
    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/restic   3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
  2. 通过运行以下命令验证DataProtectionApplication(DPA) 是否已协调

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    示例输出
    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
  3. 验证type是否设置为Reconciled

  4. 通过运行以下命令验证备份存储位置并确认PHASEAvailable

    $ oc get backupstoragelocations.velero.io -n openshift-adp
    示例输出
    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true