5.2. OADP 发行注记
5.2.1. OADP 1.5 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 的发行注记介绍了新的功能和增强功能、已弃用的功能、产品建议、已知问题和解决问题。
有关 OADP 的更多信息,请参阅 OpenShift API for Data Protection (OADP) FAQ
5.2.1.1. OADP 1.5.2 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.5.2 发现注记列出了所有已知的问题。
5.2.1.1.1. 已解决的问题 复制链接链接已复制到粘贴板!
内部镜像备份的自签名证书不应破坏其他 BSLs
在此次更新之前,OADP 只会处理在所有备份存储位置(BSLs)中找到的第一个自定义 CA 证书,并在全局范围内应用它。这个行为可防止带有不同 CA 证书的多个 BSLs 正常工作。另外,不会包括系统可信证书,从而导致连接到标准服务时失败。在这个版本中,OADP 现在:
- 将 AWS BSLs 的所有唯一 CA 证书连接到单个捆绑包中。
- 自动包含系统可信证书。
- 启用具有不同自定义 CA 证书的多个 BSLs 可以同时操作。
- 仅在启用镜像备份时处理 CA 证书(默认行为)。
此功能增强提高了使用具有不同证书要求的多个存储供应商的环境的兼容性,特别是在使用自签名证书将内部镜像备份到 AWS S3 兼容存储时。
5.2.1.2. OADP 1.5.1 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.5.1 发行注记列出了新功能、已解决的问题、已知问题和已弃用的功能。
5.2.1.2.1. 新功能 复制链接链接已复制到粘贴板!
CloudStorage API 被完全支持
在此版本之前,CloudStorage API 功能作为一个技术预览提供,在 OADP 1.5.1 中被完全支持。CloudStorage API 会自动为对象存储创建存储桶。
新的 DataProtectionTest 自定义资源可用
DataProtectionTest (DPT) 是一个自定义资源 (CR),它提供验证 OADP 配置的框架。DPT CR 检查并报告以下参数信息:
- 将备份上传到对象存储的性能。
- 持久性卷声明的 Container Storage Interface (CSI) 快照就绪。
- 存储桶配置,如加密和版本控制。
在 DPT CR 中使用此信息,您可以确保正确配置并正确配置您的数据保护环境,并根据设置配置执行。
请注意,当使用带有 Azure 上的 OADP 的 DPT 时,您必须配置 STORAGE_ACCOUNT_ID。
新的节点代理负载均衡配置可用
-
节点代理负载关联性: 您可以使用
DataProtectionApplication(DPA) 自定义资源 (CR) 的spec.podConfig.nodeSelector对象将节点代理 pod 调度到特定的节点上。您可以使用 DPA spec 中的nodeagent.loadAffinity对象对节点代理 pod 调度添加更多限制。 存储库维护作业关联性配置 : 只有在使用 Kopia 作为备份存储库时,您可以使用
DataProtectionApplication(DPA)自定义资源(CR) 中的存储库维护作业关联性配置。您可以选择在全局级别上配置负载关联性,会影响所有存储库或每个存储库。您还可以使用全局和每个存储库配置的组合。
-
Velero load 关联性: 您可以使用
podConfig.nodeSelector对象将 Velero pod 分配给特定的节点。您还可以为 pod 级别关联性和反关联性配置velero.loadAffinity对象。
节点代理负载并发可用
在这个版本中,用户可以控制集群中每个节点上可以同时运行的最大节点代理操作数量。它还启用了更好的资源管理、优化备份和恢复工作流,以提高性能和更精简的体验。
5.2.1.2.2. 已解决的问题 复制链接链接已复制到粘贴板!
DataProtectionApplicationSpec 超过注解限制,从而导致部署出现潜在的错误配置
在此次更新之前,DataProtectionApplicationSpec 使用已弃用的 PodAnnotations,这会导致注解限制溢出。这会导致部署出现潜在的错误配置。在本发行版本中,我们为 Operator 部署的 pod 中的注解添加了 PodConfig,确保最终用户提供一致的注解并改进了可管理性。现在,部署应该更加可靠且更易于管理。
OADP 控制器管理器的根文件系统现在是只读
在此次更新之前,openshift-adp-controller-manager-* pod 的 manager 容器被配置为使用可写的根文件系统运行。因此,这可能会导致使用容器的文件系统或外部可执行文件的篡改。在这个版本中,容器的安全上下文已被更新,将 root 文件系统设置为只读,同时确保需要写入访问权限所需的功能(如 Kopia 缓存)可以继续正确运行。因此,容器会针对潜在的威胁进行强化。
在多个 DPAs 中,nonAdmin.enable: false 不再导致协调问题
在此次更新之前,当用户尝试在已存在的集群中创建第二个非管理员 DataProtectionApplication (DPA) 时,新的 DPA 无法协调。在这个版本中,每个集群中对 Non-Admin Controller 安装的限制已被删除。因此,用户可以在集群中安装多个 Non-Admin Controller,而不会遇到错误。
OADP 支持自签名证书
在此次更新之前,使用自签名证书作为带有存储供应商(如 Minio)的备份镜像会导致备份过程中出现 x509: certificate signed by unknown authority 错误。在这个版本中,证书验证已被更新,以支持 OADP 中的自签名证书,确保成功备份。
Velero describe 包括 defaultVolumesToFsBackup
在此次更新之前,velero describe 输出命令会省略 defaultVolumesToFsBackup 标志。这会影响用户的备份配置详情的可见性。在这个版本中,velero describe 输出包含 defaultVolumesToFsBackup 标志信息,改进了备份设置的可见性。
当 s3Url 是安全的时,DPT CR 不再失败
在此次更新之前,当 s3Url 是安全的时,因为一个未验证的证书而导致 DataProtectionTest (DPT) 失败,因为 DPT CR 缺少在 spec 字段中跳过或添加 caCert 的功能。因此,因为未验证的证书,数据上传失败。在这个版本中,DPT CR 已更新,可以接受和跳过 spec 字段中的 CA 证书,从而解决了 SSL 验证错误的问题。因此,在使用安全 s3Url 时,DPT 不再失败。
向 DPA 添加一个其 backupLocation 名称已存在的 backupLocation 时不会被拒绝
在此次更新之前,在 DataProtectionApplication (DPA) 中添加第二个 backupLocation 会导致 OADP 进入无效的状态,从而导致 Backup 和 Restore 失败,因为 Velero 无法读取 Secret 凭证。因此,备份和恢复操作会失败。在这个版本中,DPA 中重复的 backupLocation 名称不再被允许,防止 Backup 和 Restore 失败。因此,重复的 backupLocation 名称会被拒绝,确保无缝的数据保护。
5.2.1.2.3. 已知问题 复制链接链接已复制到粘贴板!
恢复使用 Cinder CSI 驱动程序在 OpenStack 上创建的备份会失败
当您为使用 Cinder Container Storage Interface (CSI) 驱动程序的 OpenStack 平台上创建的备份启动恢复操作时,初始备份仅在源应用程序手动缩减后成功。恢复作业失败,使您无法从备份中恢复应用程序的数据和状态。当前还没有已知的临时解决方案。
如果 nodeAgent.loadAffinity 参数有多个元素,Datamover pod 会被调度在一个意料外的节点上
由于 Velero 1.14 及之后的版本中的一个问题,OADP node-agent 只处理 loadAffinity 数组中的第一个 nodeSelector 元素。因此,如果您定义了多个 nodeSelector 对象,会忽略除第一个以外的所有对象,从而可能会导致在备份过程中将数据 pod 调度到意外节点上。
要临时解决这个问题,将来自多个 nodeSelector 对象的所有所需的 matchExpressions 整合到第一个 nodeSelector 对象中。因此,所有节点关联性规则都会被正确应用,确保将数据 pod 调度到适当的节点。
当使用带有别名的命令的 CA 证书时,OADP Backup 会失败
CA 证书不会作为一个文件存储在运行的 Velero 容器上。因为这个原因,会由于 Velero 容器中缺少 caCert 出现降级的情况,需要手动设置和下载。要临时解决这个问题,在 Velero 部署中手动添加证书。具体步骤请参阅使用带有 velero 部署的 cacert 命令别名。
Data Mover restore 操作不支持 nodeSelector spec
当使用 nodeAgent 参数中设置的 nodeSelector 字段创建数据保护应用程序(DPA)时,Data Mover restore 部分会失败,而不是完成恢复操作。当前还没有已知的临时解决方案。
当使用 caCert 配置 DPA 时,镜像流备份部分失败
在 S3 连接中使用 DataProtectionApplication (DPA) 中的 caCert 备份过程中的未验证证书会导致 ocp-django 应用程序的备份部分失败,并导致数据丢失。当前还没有已知的临时解决方案。
Kopia 不会删除 worker 节点上的缓存
当配置了 ephemeral-storage 参数并运行文件系统恢复时,缓存不会自动从 worker 节点中删除。因此,在恢复备份过程时 /var 分区会溢出,从而增加了存储使用量并潜在存在资源耗尽的情况。要临时解决这个问题,重启节点代理 pod,这会清除缓存。这样,缓存会被删除。
因为无效的项目配置,在 Workload Identity 上 GCP VSL 备份会失败
当在 GCP Workload Identity 上执行 volumeSnapshotLocation (VSL) 备份时,Velero GCP 插件会在 DataProtectionApplication (DPA) 的 snapshotLocations 配置中也指定了无效的 API 请求。因此,GCP API 返回 RESOURCE_PROJECT_INVALID 错误,备份作业会完成 PartiallyFailed 状态。当前还没有已知的临时解决方案。
使用 STS 的 AWS 上的 CloudStorage API 的 VSL 备份失败
volumeSnapshotLocation (VSL) 备份失败,因为凭证文件中缺少 AZURE_RESOURCE_GROUP 参数,即使 VSL 的 DataProtectionApplication (DPA) 配置中提到了 AZURE_RESOURCE_GROUP。当前还没有已知的临时解决方案。
使用 STS 的 Azure 上备份带有 ImageStreams 的应用程序会失败
当使用 STS 在 Azure 集群上备份包含镜像流资源的应用程序时,OADP 插件会错误地尝试为容器 registry 查找基于 secret 的凭证。因此,STS 环境中没有找到所需的 secret,从而导致 ImageStream 自定义备份操作失败。这会导致标记为 PartiallyFailed 的整体备份状态。当前还没有已知的临时解决方案。
对于 CloudStorageRef 配置,DPA 协调失败
当用户创建存储桶并使用 backupLocations.bucket.cloudStorageRef 配置时,存储桶凭证不会出现在 DataProtectionApplication (DPA) 自定义资源 (CR) 中。因此,即使 CloudStorage CR 中存在存储桶凭证,DPA 协调也会失败。要临时解决这个问题,在 DPA CR 的 backupLocations 部分添加相同的凭证。
5.2.1.2.4. 弃用的功能 复制链接链接已复制到粘贴板!
configuration.restic specification 字段已弃用
在 OADP 1.5.0 中,config.restic 规格字段已弃用。使用带有 uploaderType 字段的 nodeAgent 部分选择 kopia 或 restic 作为 uploaderType。请注意,Restic 在 OADP 1.5.0 中已弃用。
5.2.1.3. OADP 1.5.0 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.5.0 发行注记列出了已解决的问题和已知问题。
5.2.1.3.1. 新功能 复制链接链接已复制到粘贴板!
OADP 1.5.0 引入了一个新的自助服务功能
OADP 1.5.0 引入了名为 OADP Self-Service 的新功能,启用命名空间管理员用户在 OpenShift Container Platform 上备份和恢复应用程序。在之前的 OADP 版本中,您需要 cluster-admin 角色来执行 OADP 操作,如备份和恢复应用程序、创建备份存储位置等。
从 OADP 1.5.0 开始,您不需要 cluster-admin 角色来执行备份和恢复操作。您可以将 OADP 与命名空间 admin 角色一起使用。命名空间 admin 角色仅对该用户分配到的命名空间具有管理员访问权限。您只能在集群管理员安装 OADP Operator 并提供所需权限后使用 Self-Service 功能。
使用 must-gather 工具收集日志已使用 Markdown 概述进行了改进
您可以使用 must-gather 工具来收集用于数据保护 (OADP) 自定义资源的日志以及 OpenShift API 的信息。must-gather 数据必须附加到所有客户案例。这个工具使用收集的信息生成 Markdown 输出文件,它位于 must-gather 日志集群目录中。
dataMoverPrepareTimeout 和 resourceTimeout 参数现在添加到 DPA 中的 nodeAgent 中
Data Protection Application (DPA) 中的 nodeAgent 字段现在包含以下参数:
-
dataMoverPrepareTimeout: 定义DataUpload或DataDownload进程将等待的持续时间。默认值为 30 分钟。 -
resourceTimeout:设置没有被其他特定超时参数解决的资源进程的超时时间。默认值为 10 分钟。
使用 DPA 中的 spec.configuration.nodeAgent 参数来配置 nodeAgent 守护进程集
Velero 不再使用 node-agent-config 配置映射来配置 nodeAgent 守护进程集。在这个版本中,您必须在数据保护应用程序(DPA)中使用新的 spec.configuration.nodeAgent 参数来配置 nodeAgent 守护进程集。
现在可以使用备份存储库配置配置映射配置 DPA
使用 Velero 1.15 及之后的版本,您现在可以配置每个存储库缓存的总大小。这可防止因为临时存储不足而无法移除 pod。请参阅以下新参数添加到 DPA 中的 NodeAgentConfig 字段中:
-
cacheLimitMB:以 MB 为单位设置本地数据缓存大小限制。 fullMaintenanceInterval:默认值为 24 小时。使用以下覆盖选项控制 Kopia 存储库中的已删除 Velero 备份率:-
normalGC: 24 小时 -
fastGC: 12 小时 -
eagerGC: 6 小时
-
提高 node-agent 安全性
在这个版本中,添加了以下更改:
-
现在,在 DPA 中的
velero字段中添加了新的configuration选项。 disableFsBackup参数的默认值为false或non-existing。在这个版本中,以下选项添加到SecurityContext字段中:-
Privileged: true -
AllowPrivilegeEscalation: true
-
如果将
disableFsBackup参数设置为true,它会从 node-agent 中删除以下挂载:-
host-pods -
host-plugins
-
- 修改 node-agent 始终以非 root 用户身份运行。
- 将 root 文件系统更改为只读方式。
使用写访问权限更新以下挂载点:
-
/home/velero -
tmp/credentials
-
-
将
SeccompProfileTypeRuntimeDefault选项用于SeccompProfile参数。
为并行项目备份添加 DPA 支持
默认情况下,只有一个线程处理一个项目块。Velero 1.16 支持并行项目备份,其中可以并行处理备份中的多个项目。
您可以使用可选的 Velero 服务器参数 --item-block-worker-count 来运行额外的 worker 线程来并行处理项目。要在 OADP 中启用此功能,请将 dpa.Spec.Configuration.Velero.ItemBlockWorkerCount 参数设置为大于零的整数值。
目前还不支持并行运行多个完整备份。
OADP 日志现在以 JSON 格式提供
随着 OADP 1.5.0 的发布,日志现在以 JSON 格式提供。它有助于在 Elastic logs 管理系统中包含预解析的数据。
oc get dpa 命令现在显示 RECONCILED 状态
在这个版本中,oc get dpa 命令会显示 RECONCILED 状态,而不是只显示 NAME 和 AGE 以改进用户体验。例如:
oc get dpa -n openshift-adp
$ oc get dpa -n openshift-adp
NAME RECONCILED AGE
velero-sample True 2m51s
5.2.1.3.2. 已解决的问题 复制链接链接已复制到粘贴板!
容器现在对 terminationMessagePolicy 使用 FallbackToLogsOnError
在这个版本中,terminationMessagePolicy 字段可以为 Data Protection (OADP) Operator 容器(如 operator-manager,velero,node-agent, 和 non-admin-controller )设置 FallbackToLogsOnError 值。
此更改可确保容器退出并显示错误并且终止消息文件为空,OpenShift 会使用容器日志输出的最后一部分作为终止消息。
命名空间管理员现在可以在恢复后访问应用程序
在以前的版本中,在恢复操作后,命名空间 admin 无法执行带有以下错误的应用程序:
-
不允许 exec 操作,因为 pod 的安全上下文超出您的权限 -
无法针对任何安全性上下文约束进行验证 -
用户或 serviceaccount, provider restricted-v2 不可用
在这个版本中,这个问题已被解决,命名空间 admin 可以在恢复后成功访问应用程序。
现在,可以使用注解在单独的资源实例级别指定状态恢复
在以前的版本中,只有使用 Restore 自定义资源(CR)中的 restoreStatus 字段在资源类型中配置状态恢复。
在这个版本中,您可以使用以下注解在单独的资源实例级别指定状态恢复:
metadata:
annotations:
velero.io/restore-status: "true"
metadata:
annotations:
velero.io/restore-status: "true"
现在,恢复可以成功使用 excludedClusterScopedResources
在以前的版本中,当执行将 excludeClusterScopedResources 字段设置为 storageclasses,Namespace 参数的应用程序备份时,备份可以成功,但恢复会部分失败。在这个版本中,恢复可以成功。
备份已完成,即使它在 waitingForPluginOperations 阶段被重启
在以前的版本中,备份被标记为 failed,并带有以下错误消息:
failureReason: found a backup with status "InProgress" during the server starting, mark it as "Failed"
failureReason: found a backup with status "InProgress" during the server starting,
mark it as "Failed"
在这个版本中,如果备份在 waitingForPluginOperations 阶段被重启,则会完成备份。
现在,当 DPA 中的 ` disableFsbackup` 参数设置为 true 时,错误消息更为明确
在以前的版本中,当数据保护应用程序(DPA)的 spec.configuration.velero.disableFsBackup 字段被设置为 true 时,备份部分会失败并显示错误,但信息并不明确。
在这个版本中,错误消息更加明确,有助于对问题进行故障排除。例如,错误消息表示 disableFsBackup: true 是 DPA 中的问题,或者对于非管理员用户,则无法访问 DPA。
在 parseAWSSecret 中处理 AWS STS 凭证
在以前的版本中,使用 STS 身份验证的 AWS 凭证不会被正确验证。
在这个版本中,parseAWSSecret 功能检测到特定于 STS 的字段,并更新 ensureSecretDataExists 功能来正确处理 STS 配置集。
repositoryMaintenance 作业关联性配置可用于配置
在以前的版本中,DPA 规格中缺少存储库维护作业 pod 关联性的新配置。
在这个版本中,repositoryMaintenance 作业关联性配置可用于将 BackupRepository 标识符映射到其配置。
当 CR 规格正确后,ValidationErrors 字段会消失
在以前的版本中,当使用错误 spec.schedule 值创建调度 CR,之后使用正确的值修补了这个值,ValidationErrors 字段仍然存在。因此,即使 spec 正确,ValidationErrors 字段也会显示不正确的信息。
在这个版本中,在 CR 规格正确后,ValidationErrors 字段将不再存在。
当在 restoreSpec 中使用了 includedNamesapces 字段时,volumeSnapshotContents 自定义资源会被恢复
在以前的版本中,当在恢复规格中使用 includedNamespace 字段触发恢复操作时,恢复操作会成功完成,但没有创建 volumeSnapshotContents 自定义资源 (CR),且 PVC 处于 Pending 状态。
在这个版本中,即使 restoreSpec 中使用 includedNamesapces 字段,volumeSnapshotContents CR 也会被恢复。因此,应用程序 pod 在恢复后处于 Running 状态。
OADP operator 在 AWS 上成功创建存储桶
在以前的版本中,容器使用 readOnlyRootFilesystem: true 设置进行配置,但代码会尝试使用 os.CreateTemp() 函数在 /tmp 目录中创建临时文件。因此,当将 AWS STS 身份验证与 Cloud Credential Operator (CCO) 流搭配使用时,OADP 无法创建 AWS 凭证处理所需的临时文件,并显示以下错误:
ERROR unable to determine if bucket exists. {"error": "open /tmp/aws-shared-credentials1211864681: read-only file system"}
ERROR unable to determine if bucket exists. {"error": "open /tmp/aws-shared-credentials1211864681: read-only file system"}
在这个版本中,添加了以下更改来解决这个问题:
-
在控制器 pod 规格中,有一个新的名为
tmp-dir的emptyDir卷。 -
一个卷挂载到容器,该容器将此卷挂载到
/tmp目录中。 -
对于安全最佳实践,可维护
readOnlyRootFilesystem: true。 -
使用推荐的
os.CreateTemp()函数替换弃用的ioutil.TempFile()函数。 -
删除了不必要的
io/ioutil导入,这已不再需要。
有关本发行版本中解决的所有问题的完整列表,请参阅 JIRA 中的 OADP 1.5.0 解决的问题列表。
5.2.1.3.3. 已知问题 复制链接链接已复制到粘贴板!
Kopia 在备份过期后不会删除所有工件
在备份过期后,即使删除了备份,Kopia 也不会从 S3 位置的 ${bucket_name}/kopia/$openshift-adp 中删除卷工件。与过期和删除的数据文件相关的信息保留在元数据中。为确保 OpenShift API for Data Protection (OADP) 可以正常工作,数据不会被删除,并存在于 /kopia/ 目录中,例如:
-
kopia.repository:主仓库格式信息,如加密、版本和其他信息。 -
kopia.blobcfg: 配置如何命名数据 Blob。 -
kopia.maintenance: 跟踪维护所有者,调度和最新成功的构建。 -
log: 日志 blobs.
有关本发行版本中所有已知问题的完整列表,请参阅 JIRA 中的 OADP 1.5.0 已知问题 列表。
5.2.1.3.4. 弃用的功能 复制链接链接已复制到粘贴板!
configuration.restic specification 字段已弃用
在 OpenShift API for Data Protection (OADP) 1.5.0 中,config.restic specification 字段已弃用。使用带有 uploaderType 字段的 nodeAgent 部分选择 kopia 或 restic 作为 uploaderType。请注意,Restic 在 OpenShift API for Data Protection (OADP) 1.5.0 中已弃用。
5.2.1.3.5. 技术预览 复制链接链接已复制到粘贴板!
对 HyperShift 托管 OpenShift 集群的支持作为技术预览提供
OADP 可以作为技术预览支持并促进 HyperShift 托管 OpenShift 集群中的应用程序迁移。它为托管的集群中的应用程序确保无缝的备份和恢复操作。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
5.2.1.4. 将 OADP 1.4 升级到 1.5 复制链接链接已复制到粘贴板!
始终升级到下一个次版本。不要跳过版本。要升级到更新的版本,请一次只升级一个频道。例如,要从 OADP 1.1 升级到 1.3,请首先升级到 1.2,然后再升级到 1.3。
5.2.1.4.1. 从 OADP 1.4 更新到 1.5 复制链接链接已复制到粘贴板!
Velero 服务器已从 1.14 版本更新至 1.16。
这会更改以下内容:
- 版本支持更改
- OpenShift API for Data Protection 实施了一个简化的版本支持政策。红帽在一个 OpenShift 版本上只支持一个 OpenShift API for Data Protection (OADP),以确保其稳定性和可维护性。OADP 1.5.0 只在 OpenShift 4.19 版本中被支持。
- OADP 自助服务
OADP 1.5.0 引入了名为 OADP Self-Service 的新功能,启用命名空间管理员用户在 OpenShift Container Platform 上备份和恢复应用程序。在之前的 OADP 版本中,您需要 cluster-admin 角色来执行 OADP 操作,如备份和恢复应用程序、创建备份存储位置等。
从 OADP 1.5.0 开始,您不需要 cluster-admin 角色来执行备份和恢复操作。您可以将 OADP 与命名空间 admin 角色一起使用。命名空间 admin 角色仅对该用户分配到的命名空间具有管理员访问权限。您只能在集群管理员安装 OADP Operator 并提供所需权限后使用 Self-Service 功能。
backupPVC和restorePVC配置backupPVC资源是一个中间的持久性卷声明 (PVC),用于在数据移动备份操作期间访问数据。您可以使用DataProtectionApplication(DPA) 自定义资源中的nodeAgent.backupPVC部分创建一个readonly备份 PVC。restorePVC资源是一个中间 PVC,用于在 Data Mover restore 操作过程中写入数据。您可以使用
ignoreDelayBinding字段在 DPA 中配置restorePVC。
5.2.1.4.2. 备份 DPA 配置 复制链接链接已复制到粘贴板!
您必须备份当前的 DataProtectionApplication (DPA) 配置。
流程
运行以下命令来保存您当前的 DPA 配置:
示例命令
oc get dpa -n openshift-adp -o yaml > dpa.orig.backup
$ oc get dpa -n openshift-adp -o yaml > dpa.orig.backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.1.4.3. 升级 OADP Operator 复制链接链接已复制到粘贴板!
您可以按照以下流程升级 OpenShift API for Data Protection (OADP) Operator。
不要在 OpenShift 4.18 集群上安装 OADP 1.5.0。
先决条件
- 已安装最新的 OADP 1.4.5。
- 已备份了数据。
流程
将 OpenShift 4.18 升级到 OpenShift 4.19。
注意OpenShift 4.19 不支持 OpenShift API for Data Protection (OADP) 1.4。
-
将 OADP Operator 的订阅频道从
stable-1.4改为stable。 - 等待 Operator 和容器更新并重启。
5.2.1.4.4. 将 DPA 转换为 OADP 1.5.0 的新版本 复制链接链接已复制到粘贴板!
OpenShift 4.19 不支持 OpenShift API for Data Protection (OADP) 1.4。您可以使用新的 spec.configuration.nodeAgent 字段及其子字段将数据保护应用程序(DPA)转换为新的 OADP 1.5 版本。
流程
要配置
nodeAgent守护进程集,请使用 DPA 中的spec.configuration.nodeAgent参数。请参见以下示例:DataProtectionApplication配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用名为
node-agent-config的ConfigMap资源配置nodeAgent守护进程集,请参阅以下示例配置:配置映射示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.1.4.5. 验证升级 复制链接链接已复制到粘贴板!
您可以按照以下流程验证 OpenShift API for Data Protection (OADP) 升级。
流程
验证
DataProtectionApplication(DPA) 是否已成功协调:oc get dpa dpa-sample -n openshift-adp
$ oc get dpa dpa-sample -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME RECONCILED AGE dpa-sample True 2m51s
NAME RECONCILED AGE dpa-sample True 2m51sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意RECONCILED列必须为True。运行以下命令,通过查看 OADP 资源来验证安装是否完成:
oc get all -n openshift-adp
$ oc get all -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意node-agentpod 仅在DataProtectionApplication(DPA) 中使用restic或kopia时才创建。在 OADP 1.4.0 和 OADP 1.3.0 版本中,node-agentpod 被标记为restic。运行以下命令,验证备份存储位置并确认
PHASE为Available:oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.2. OADP 1.4 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 的发行注记介绍了新的功能和增强功能、已弃用的功能、产品建议、已知问题和解决问题。
有关 OADP 的更多信息,请参阅 OpenShift API for Data Protection (OADP) FAQ
5.2.2.1. OADP 1.4.4 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.4 是一个 CGO(Container Grade Only)版本,它刷新了容器的健康级别。与 OADP 1.4.3 相比,产品本身的代码并没有变化。
5.2.2.1.1. 已知问题 复制链接链接已复制到粘贴板!
恢复有状态应用程序的问题
当您恢复使用 azurefile-csi 存储类的有状态应用程序时,恢复操作会保留在 Finalizing 阶段。(OADP-5508)
5.2.2.2. OADP 1.4.3 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.3 发行注记中列出了以下新功能。
5.2.2.2.1. 新功能 复制链接链接已复制到粘贴板!
版本 0.7.1 中的 kubevirt velero 插件的显著变化
在这个版本中,kubevirt velero 插件已更新至版本 0.7.1。主要改进包括以下程序错误修复和新功能:
- 当所有者虚拟机被排除时,备份不再会忽略虚拟机实例(VMI)。
- 对象图现在在备份和恢复操作过程中包括所有额外对象。
- 现在,在恢复操作过程中,可选生成的标签会添加到新的固件通用唯一标识符(UUID)中。
- 现在,可以在恢复操作期间切换虚拟机运行策略。
- 现在支持通过标签清除 MAC 地址。
- 现在,在备份操作过程中会跳过特定于恢复的检查。
-
现在支持
VirtualMachineClusterInstancetype和VirtualMachineClusterPreference自定义资源定义(CRD)。
5.2.2.3. OADP 1.4.2 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.2 发行注记列出了新功能、解决的问题和程序错误,以及已知的问题。
5.2.2.3.1. 新功能 复制链接链接已复制到粘贴板!
现在,可以使用 VolumePolicy 功能备份同一命名空间中的不同卷
在这个版本中,Velero 提供资源策略,以使用 VolumePolicy 功能备份同一命名空间中的不同卷。备份不同卷所支持的 VolumePolicy 功能包括 skip, snapshot, 和 fs-backup 操作。OADP-1071
文件系统 backup and data mover 现在可以使用短期凭证
文件系统 backup and data mover 现在可以使用短期凭证,如 AWS 安全令牌服务 (STS) 和 GCP WIF。现在,备份会在没有 PartiallyFailed 状态的情况下成功完成。OADP-5095
5.2.2.3.2. 已解决的问题 复制链接链接已复制到粘贴板!
现在,如果 VSL 包含不正确的供应商值,DPA 会报告错误
在以前的版本中,如果卷快照位置(VSL) spec 的供应商不正确,则数据保护应用程序(DPA)可以成功协调。在这个版本中,DPA 会报告错误并请求一个有效的供应商值。OADP-5044
对于使用不同 OADP 命名空间的备份和恢复,Data Mover 恢复可以成功。
在以前的版本中,当使用在一个命名空间中安装的 OADP 执行备份,但使用安装在不同命名空间中的 OADP 恢复时,Data Mover 恢复会失败。在这个版本中,Data Mover 恢复可以成功。OADP-5460
SSE-C 备份可用于计算的 secret 密钥的 MD5
在以前的版本中,备份失败并显示以下错误:
Requests specifying Server Side Encryption with Customer provided keys must provide the client calculated MD5 of the secret key.
Requests specifying Server Side Encryption with Customer provided keys must provide the client calculated MD5 of the secret key.
在这个版本中,解决了使用客户提供密钥(SSE-C) base64 和 MD5 哈希的 Server-Side 加密。因此,SSE-C 备份可用于计算的 secret 密钥的 MD5另外,customerKey 大小的不正确的 errorhandling 也被修复。OADP-5388
有关本发行版本中解决的所有问题的完整列表,请参阅 JIRA 中的 OADP 1.4.2 解决的问题列表。
5.2.2.3.3. 已知问题 复制链接链接已复制到粘贴板!
Data Mover restore 操作不支持 nodeSelector spec
当使用 nodeAgent 参数中设置的 nodeSelector 字段创建数据保护应用程序(DPA)时,Data Mover restore 部分会失败,而不是完成恢复操作。OADP-5260
当指定了 TLS 跳过验证时,S3 存储不会使用代理环境
在镜像 registry 备份中,当 insecureSkipTLSVerify 参数设置为 true 时,S3 存储不会使用代理环境。OADP-3143
Kopia 在备份过期后不会删除工件
在备份过期后,即使删除了备份,Kopia 也不会从 S3 位置的 ${bucket_name}/kopia/$openshift-adp 中删除卷工件。如需更多信息,请参阅"关于 Kopia 仓库维护"。OADP-5131
5.2.2.4. OADP 1.4.1 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.1 发行注记列出了新功能、解决的问题和程序错误,以及已知的问题。
5.2.2.4.1. 新功能 复制链接链接已复制到粘贴板!
新的 DPA 字段以更新客户端 qps 和 burst
现在,您可以使用新的数据保护应用程序 (DPA) 字段更改 Velero Server Kubernetes API 查询每秒(qps)和突发(burst)值。新的 DPA 字段是 spec.configuration.velero.client-qps 和 spec.configuration.velero.client-burst,它们都默认为 100。OADP-4076
使用 Kopia 启用非默认算法
在这个版本中,您可以在 Kopia 中配置哈希、加密和分割程序算法来选择非默认选项来优化不同备份工作负载的性能。
要配置这些算法,在 DataProtectionApplication (DPA) 配置的 podConfig 部分中设置 velero pod 的 env 变量。如果没有设置此变量,或者选择了一个不被支持的算法,Kopia 将默认为其标准算法。OADP-4640
5.2.2.4.2. 已解决的问题 复制链接链接已复制到粘贴板!
现在可以成功恢复没有 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".
found a podvolumebackup with status "InProgress" during the server starting,
mark it as "Failed".
现在,可以使用 DPA 覆盖 imagePullPolicy
在以前的版本中,OADP 将所有镜像的 imagePullPolicy 参数都设置为 Always。在这个版本中,OADP 会检查每个镜像是否包含了 sha256 或 sha512 摘要,然后将 imagePullPolicy 设置为 IfNotPresent; 否则 imagePullPolicy 被设置为 Always。现在,您可以使用新的 spec.containerImagePullPolicy DPA 字段覆盖此策略。OADP-4172
现在,如果初始更新失败,OADP Velero 现在可以重试更新恢复状态
在以前的版本中,OADP Velero 无法更新恢复的 CR 状态。这会无限期保留 InProgress 状态。依赖于备份和恢复 CR 状态以确定完成会失败的组件。在这个版本中,恢复的恢复 CR 状态可以正确地进入 Completed 或 Failed 状态。OADP-3227
从不同的集群恢复 BuildConfig 构建会成功,且没有任何错误
在以前的版本中,当从其他集群执行 BuildConfig Build 资源恢复时,应用程序会在内部镜像 registry 的 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
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 中生成 内存不足(OOM )条件前,内存泄漏会消耗内存。在这个版本中,当使用 CSI 和 DataMover 插件时,不会出现 Velero 内存泄漏的问题。OADP-4448
在相关 PV 被释放前,post-hook 操作不会启动
在以前的版本中,由于 Data Mover 操作的异步性,在 Data Mover 持久性卷声明 (PVC) 释放相关 pod 的持久性卷 (PV) 前,可能会尝试进行 post-hook 操作。此问题会导致备份失败,并显示 PartiallyFailed 状态。在这个版本中,在 Data Mover PVC 发布相关的 PV 前,才会启动 post-hook 操作,从而避免出现 PartiallyFailed 备份状态。OADP-3140
在带有超过 37 个字符的命名空间中部署 DPA 可以正常工作
当您在带有超过 37 个字符的命名空间中安装 OADP Operator 来创建新的 DPA 时,标记 "cloud-credentials" Secret 会失败,DPA 报告以下错误:
The generated label name is too long.
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 解决的问题列表。
5.2.2.4.3. 已知问题 复制链接链接已复制到粘贴板!
恢复 OADP 后,Cassandra 应用程序 pod 进入 CrashLoopBackoff 状态
在 OADP 恢复后,Cassandra 应用程序 pod 可能会进入 CrashLoopBackoff 状态。要临时解决这个问题,删除在恢复 OADP 后返回错误 CrashLoopBackoff 状态的 StatefulSet pod。然后,StatefulSet 控制器会重新创建这些 pod 并正常运行。OADP-4407
引用 ImageStream 的部署不会被正确恢复,并导致 pod 和卷内容被破坏
在文件系统备份(FSB)恢复操作中,引用 ImageStream 的 Deployment 资源没有被正确恢复。恢复运行 FSB 的 pod,postHook 会被提前终止。
在恢复操作过程中,OpenShift Container Platform 控制器会使用一个更新的 ImageStreamTag 哈希更新 Deployment 资源中的 spec.template.spec.containers[0].image 字段。更新会触发推出新的 pod,终止 velero 运行 FSB 和 post-hook 的 pod。
有关镜像流触发器的更多信息,请参阅触发镜像流更新。
这个行为的临时解决方案分为两个步骤:
执行排除了
Deployment资源的恢复,例如:velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --exclude-resources=deployment.apps
$ velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --exclude-resources=deployment.appsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 第一次恢复成功后,通过包含这些资源来执行第二次恢复,例如:
velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --include-resources=deployment.apps
$ velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --include-resources=deployment.appsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.2.5. OADP 1.4.0 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.0 发行注记列出了已解决的问题和已知问题。
5.2.2.5.1. 已解决的问题 复制链接链接已复制到粘贴板!
恢复在 OpenShift Container Platform 4.16 中可以正常工作
在以前的版本中,当恢复已删除的应用程序命名空间时,恢复操作部分失败,在 OpenShift Container Platform 4.16 中会出现 resource name may not be empty 错误。在这个版本中,恢复在 OpenShift Container Platform 4.16 中可以正常工作。OADP-4075
Data Mover backups 在 OpenShift Container Platform 4.16 集群中可以正常工作
在以前的版本中,Velero 使用早期版本的 SDK,其中 Spec.SourceVolumeMode 字段不存在。因此,在带有 v4.2 版本的外部快照器上的 OpenShift Container Platform 4.16 集群中,Data Mover backups 会失败。在这个版本中,外部快照升级到 v7.0 及更新版本。因此,在 OpenShift Container Platform 4.16 集群中备份不会失败。OADP-3922
有关本发行版本中解决的所有问题的完整列表,请参阅 JIRA 中的 OADP 1.4.0 解决的问题列表。
5.2.2.5.2. 已知问题 复制链接链接已复制到粘贴板!
在没有为 MCG 设置 checksumAlgorithm 时,备份会失败
在对任何使用 Noobaa 作为备份位置的应用程序进行备份时,如果未设置 checksumAlgorithm 配置参数,备份会失败。要解决这个问题,如果您在 Backup Storage Location (BSL) 配置中没有为 checksumAlgorithm 提供值,则会添加一个空值。空值只为使用数据保护应用程序 (DPA) 自定义资源 (CR) 创建的 BSLs 添加,如果使用任何其他方法创建 BSL,则不会添加这个值。OADP-4274
有关本发行版本中所有已知问题的完整列表,请参阅 JIRA 中的 OADP 1.4.0 已知问题 列表。
5.2.2.5.3. 升级备注 复制链接链接已复制到粘贴板!
始终升级到下一个次版本。不要 跳过版本。要升级到更新的版本,请一次只升级一个频道。例如,若要从 OpenShift API for Data Protection (OADP) 1.1 升级到 1.3,首先升级到 1.2,然后再升级到 1.3。
5.2.2.5.3.1. 从 OADP 1.3 更改为 1.4 复制链接链接已复制到粘贴板!
Velero 服务器已从 1.12 版本更新至 1.14。请注意,数据保护应用程序 (DPA) 没有改变。
这会更改以下内容:
-
velero-plugin-for-csi代码现在包括在 Velero 代码中,这意味着插件不再需要init容器。 - Velero 将客户端 Burst 和 QPS 默认值分别从 30 和 20 改为 100 和 100。
velero-plugin-for-aws插件更新了BackupStorageLocation对象(BSLs)中的spec.config.checksumAlgorithm字段的默认值,从""(不计算 checksum) 改为CRC32算法。知道 checksum 算法类型只能用于 AWS。几个 S3 供应商要求通过将 checksum 算法设置为""来禁用md5sum。使用您的存储供应商确认md5sum算法支持和配置。在 OADP 1.4 中,为此配置在 DPA 中创建 BSL 的默认值为
""。这个默认值表示没有检查md5sum,它与 OADP 1.3 一致。对于在 DPA 中创建的 BSL,使用 DPA 中的spec.backupLocations[].velero.config.checksumAlgorithm字段更新它。如果您的 BSLs 在 DPA 之外创建,您可以使用 BSLs 中的spec.config.checksumAlgorithm来更新此配置。
5.2.2.5.3.2. 备份 DPA 配置 复制链接链接已复制到粘贴板!
您必须备份当前的 DataProtectionApplication (DPA) 配置。
流程
运行以下命令来保存您当前的 DPA 配置:
示例命令
oc get dpa -n openshift-adp -o yaml > dpa.orig.backup
$ oc get dpa -n openshift-adp -o yaml > dpa.orig.backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.2.5.3.3. 升级 OADP Operator 复制链接链接已复制到粘贴板!
在升级 OpenShift API for Data Protection (OADP) Operator 时,请使用以下步骤。
流程
-
将 OADP Operator 的订阅频道从
stable-1.3改为stable-1.4。 - 等待 Operator 和容器更新并重启。
5.2.2.5.4. 将 DPA 转换为新版本 复制链接链接已复制到粘贴板!
要从 OADP 1.3 升级到 1.4,则不需要数据保护应用程序 (DPA) 更改。
5.2.2.5.5. 验证升级 复制链接链接已复制到粘贴板!
使用以下步骤验证升级。
流程
运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:
oc get all -n openshift-adp
$ oc get all -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
DataProtectionApplication(DPA) 是否已协调:oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
验证
type被设置为Reconciled。 运行以下命令,验证备份存储位置并确认
PHASE为Available:oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow