×

您可以通过安装 OADP 运算符并配置备份位置和快照位置来安装用于数据保护的 OpenShift API (OADP) 与 OpenShift Data Foundation。然后,安装数据保护应用程序。

从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作容器迁移工具包运算符的依赖项,不能作为独立运算符使用。

您可以将多云对象网关或任何与 AWS S3 兼容的对象存储配置为备份位置。

CloudStorage API 自动创建对象存储的存储桶,只是一个技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您提前访问即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

您可以为备份位置创建Secret,然后安装数据保护应用程序。有关更多详细信息,请参阅安装 OADP 运算符

要在受限网络环境中安装 OADP 运算符,您必须首先禁用默认的 OperatorHub 源并镜像运算符目录。有关详细信息,请参阅在脱机环境中使用运算符生命周期管理器

关于备份和快照位置及其密钥

您在DataProtectionApplication自定义资源 (CR) 中指定备份和快照位置及其密钥。

备份位置

您可以将与 AWS S3 兼容的对象存储指定为备份位置,例如多云对象网关;Red Hat 容器存储;Ceph RADOS 网关(也称为 Ceph 对象网关);Red Hat OpenShift Data Foundation;或 MinIO。

Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部映像作为存档文件备份到对象存储。

快照位置

如果您使用云提供商的原生快照 API 来备份持久卷,则必须将云提供商指定为快照位置。

如果您使用容器存储接口 (CSI) 快照,则无需指定快照位置,因为您将创建VolumeSnapshotClass CR 来注册 CSI 驱动程序。

如果您使用文件系统备份 (FSB),则无需指定快照位置,因为 FSB 将文件系统备份到对象存储。

密钥

如果备份和快照位置使用相同的凭据,或者您不需要快照位置,则创建一个默认Secret

如果备份和快照位置使用不同的凭据,则创建两个密钥对象

  • 备份位置的自定义Secret,您在DataProtectionApplication CR 中指定。

  • 快照位置的默认Secret,未在DataProtectionApplication CR 中引用。

数据保护应用程序需要一个默认Secret。否则,安装将失败。

如果您不想在安装过程中指定备份或快照位置,您可以创建一个包含空 `credentials-velero` 文件的默认 `Secret`。

创建默认 Secret

如果您的备份和快照位置使用相同的凭据,或者您不需要快照位置,则可以创建一个默认的 `Secret`。

Secret 的默认名称是 `cloud-credentials`,除非您的备份存储提供商具有默认插件,例如 `aws`、`azure` 或 `gcp`。在这种情况下,默认名称在特定于提供商的 OADP 安装过程中指定。

DataProtectionApplication 自定义资源 (CR) 需要一个默认的 `Secret`。否则,安装将失败。如果未指定备份位置 `Secret` 的名称,则使用默认名称。

如果您不想在安装过程中使用备份位置凭据,可以使用空 `credentials-velero` 文件创建一个具有默认名称的 `Secret`。

先决条件
  • 您的对象存储和云存储(如有)必须使用相同的凭据。

  • 您必须为 Velero 配置对象存储。

  • 您必须以适当的格式为对象存储创建一个 `credentials-velero` 文件。

步骤
  • 创建具有默认名称的 `Secret`

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero

安装数据保护应用程序时,会在 `DataProtectionApplication` CR 的 `spec.backupLocations.credential` 块中引用 `Secret`。

为不同的凭据创建 Secret

如果您的备份和快照位置使用不同的凭据,则必须创建两个 `Secret` 对象

  • 具有自定义名称的备份位置 `Secret`。自定义名称在 `DataProtectionApplication` 自定义资源 (CR) 的 `spec.backupLocations` 块中指定。

  • 具有默认名称 `cloud-credentials` 的快照位置 `Secret`。此 `Secret` 未在 `DataProtectionApplication` CR 中指定。

步骤
  1. 为快照位置创建一个 `credentials-velero` 文件,该文件应采用适合您云提供商的格式。

  2. 为快照位置创建一个具有默认名称的 `Secret`

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
  3. 为备份位置创建一个 `credentials-velero` 文件,该文件应采用适合您对象存储的格式。

  4. 为备份位置创建一个具有自定义名称的 `Secret`

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
  5. 将具有自定义名称的 `Secret` 添加到 `DataProtectionApplication` CR,如下例所示

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            provider: <provider>
            default: true
            credential:
              key: cloud
              name: <custom_secret> (1)
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
    1 具有自定义名称的备份位置 `Secret`。

配置数据保护应用程序

您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。

设置 Velero CPU 和内存资源分配

您可以通过编辑 `DataProtectionApplication` 自定义资源 (CR) 清单来设置 `Velero` pod 的 CPU 和内存资源分配。

先决条件
  • 您必须安装 OpenShift 数据保护 (OADP) 运算符。

步骤
  • 编辑 `DataProtectionApplication` CR 清单中 `spec.configuration.velero.podConfig.ResourceAllocations` 块中的值,如下例所示

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> (1)
            resourceAllocations: (2)
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    1 指定要提供给 Velero podSpec 的节点选择器。
    2 列出的 `resourceAllocations` 用于平均使用情况。

Kopia 是 OADP 1.3 及更高版本中的一个选项。您可以使用 Kopia 进行文件系统备份,对于具有内置数据移动器的 Data Mover 案例,Kopia 是您唯一的选项。

Kopia 比 Restic 更资源密集型,您可能需要相应地调整 CPU 和内存需求。

使用 `nodeSelector` 字段选择哪些节点可以运行节点代理。`nodeSelector` 字段是推荐的最简单的节点选择约束形式。指定的任何标签都必须与每个节点上的标签匹配。

有关更多详细信息,请参阅 配置节点代理和节点标签

根据收集的数据调整 Ceph CPU 和内存需求

以下建议基于在规模和性能实验室中进行的性能观察。这些更改与 Red Hat OpenShift 数据基金会 (ODF) 特别相关。如果使用 ODF,请咨询相应的调优指南以获取官方建议。

配置的 CPU 和内存需求

备份和还原操作需要大量的 CephFS `PersistentVolumes` (PV)。为避免 Ceph MDS pod 因 `out-of-memory` (OOM) 错误而重新启动,建议如下配置

配置类型 请求 最大限制

CPU

请求更改为 3

最大限制为 3

内存

请求更改为 8 Gi

最大限制为 128 Gi

启用自签名 CA 证书

您必须通过编辑 `DataProtectionApplication` 自定义资源 (CR) 清单来启用对象存储的自签名 CA 证书,以防止出现 `certificate signed by unknown authority` 错误。

先决条件
  • 您必须安装 OpenShift 数据保护 (OADP) 运算符。

步骤
  • 编辑 `DataProtectionApplication` CR 清单的 `spec.backupLocations.velero.objectStorage.caCert` 参数和 `spec.backupLocations.velero.config` 参数

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> (1)
            config:
              insecureSkipTLSVerify: "false" (2)
    # ...
    1 指定 Base64 编码的 CA 证书字符串。
    2 `insecureSkipTLSVerify` 配置可以设置为 `"true"` 或 `"false"`。如果设置为 `"true"`,则禁用 SSL/TLS 安全性。如果设置为 `"false"`,则启用 SSL/TLS 安全性。

将 CA 证书与为 Velero 部署创建别名的 velero 命令一起使用

您可能希望通过为此创建别名来使用 Velero CLI,而无需在您的系统上本地安装它。

先决条件
  • 您必须以具有 `cluster-admin` 角色的用户身份登录到 OpenShift Container Platform 集群。

  • 您必须安装 OpenShift CLI ( `oc` )。

    1. 要使用别名 Velero 命令,请运行以下命令

      $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
    2. 通过运行以下命令检查别名是否有效

      示例
      $ velero version
      Client:
      	Version: v1.12.1-OADP
      	Git commit: -
      Server:
      	Version: v1.12.1-OADP
    3. 要将 CA 证书与该命令一起使用,您可以通过运行以下命令将证书添加到 Velero 部署中

      $ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}')
      
      $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
      $ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
    4. 要获取备份日志,请运行以下命令

      $ velero backup logs  <backup_name>  --cacert /tmp/<your_cacert.txt>

      您可以使用这些日志查看无法备份的资源的失败和警告。

    5. 如果 Velero pod 重新启动,则 `/tmp/your-cacert.txt` 文件将消失,您必须通过重新运行上一步中的命令来重新创建 `/tmp/your-cacert.txt` 文件。

    6. 您可以通过运行以下命令检查 `/tmp/your-cacert.txt` 文件是否仍然存在于您存储它的文件位置中

      $ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
      /tmp/your-cacert.txt

在 OpenShift 数据保护 API (OADP) 的未来版本中,我们计划将证书安装到 Velero pod 中,以便不需要此步骤。

安装数据保护应用程序

您可以通过创建 `DataProtectionApplication` API 的实例来安装数据保护应用程序 (DPA)。

先决条件
  • 您必须安装 OADP 运算符。

  • 您必须将对象存储配置为备份位置。

  • 如果您使用快照来备份 PV,则您的云提供商必须支持本机快照 API 或容器存储接口 (CSI) 快照。

  • 如果备份和快照位置使用相同的凭据,则必须创建一个名为cloud-credentials的默认Secret

  • 如果备份和快照位置使用不同的凭据,则必须创建两个Secret

    • 一个Secret,使用自定义名称用于备份位置。您需要将此Secret添加到DataProtectionApplication CR。

    • 另一个Secret,使用另一个自定义名称用于快照位置。您需要将此Secret添加到DataProtectionApplication CR。

    如果您不想在安装过程中指定备份或快照位置,则可以创建一个包含空credentials-velero文件的默认Secret。如果没有默认Secret,安装将失败。

步骤
  1. 点击操作符已安装的操作符,然后选择OADP操作符。

  2. 提供的API下,点击DataProtectionApplication框中的创建实例

  3. 点击YAML视图并更新DataProtectionApplication清单的参数。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp (1)
    spec:
      configuration:
        velero:
          defaultPlugins:
            - aws (2)
            - kubevirt (3)
            - csi (4)
            - openshift (5)
          resourceTimeout: 10m (6)
        nodeAgent: (7)
          enable: true (8)
          uploaderType: kopia (9)
          podConfig:
            nodeSelector: <node_selector> (10)
      backupLocations:
        - velero:
            provider: gcp (11)
            default: true
            credential:
              key: cloud
              name: <default_secret> (12)
            objectStorage:
              bucket: <bucket_name> (13)
              prefix: <prefix> (14)
    1 OADP的默认命名空间为openshift-adp。命名空间是一个变量,可配置。
    2 需要一个与您的存储位置对应的对象存储插件。对于所有S3提供商,所需的插件为aws。对于Azure和GCP对象存储,需要azuregcp插件。
    3 可选:kubevirt插件与OpenShift虚拟化一起使用。
    4 如果您使用CSI快照备份PV,请指定csi默认插件。csi插件使用Velero CSI beta快照API。您无需配置快照位置。
    5 openshift插件是必须的。
    6 指定在超时发生前等待多个Velero资源(例如Velero CRD可用性、卷快照删除和备份存储库可用性)的分钟数。默认值为10分钟。
    7 将管理请求路由到服务器的管理代理。
    8 如果您想启用nodeAgent并执行文件系统备份,请将此值设置为true
    9 输入kopiarestic作为您的上传器。安装后无法更改选择。对于内置DataMover,必须使用Kopia。nodeAgent部署了一个DaemonSet,这意味着nodeAgent Pod在每个工作节点上运行。您可以通过向Backup CR添加spec.defaultVolumesToFsBackup: true来配置文件系统备份。
    10 指定Kopia或Restic可用的节点。默认情况下,Kopia或Restic在所有节点上运行。
    11 指定备份提供程序。
    12 指定Secret的正确默认名称,例如,如果您使用备份提供程序的默认插件,则为cloud-credentials-gcp。如果指定自定义名称,则自定义名称将用于备份位置。如果您没有指定Secret名称,则使用默认名称。
    13 指定一个bucket作为备份存储位置。如果该bucket不是专门用于Velero备份的bucket,则必须指定一个前缀。
    14 如果bucket用于多种用途,请指定Velero备份的前缀,例如velero
  4. 点击创建

验证
  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/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-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
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    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

使用客户端突发和QPS设置配置DPA

突发设置决定在应用限制之前可以发送到velero服务器的请求数量。达到突发限制后,每秒查询数(QPS)设置决定每秒可以发送多少个额外请求。

您可以通过使用突发和QPS值配置数据保护应用程序(DPA)来设置velero服务器的突发和QPS值。您可以使用DPA的dpa.configuration.velero.client-burstdpa.configuration.velero.client-qps字段来设置突发和QPS值。

先决条件
  • 您已安装OADP操作符。

步骤
  • 如以下示例所示,配置DPA中的client-burstclient-qps字段。

    示例数据保护应用程序
    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 (1)
          client-qps: 300 (2)
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    1 指定client-burst值。在此示例中,client-burst字段设置为500。
    2 指定client-qps值。在此示例中,client-qps字段设置为300。

配置节点代理和节点标签

OADP的DPA使用nodeSelector字段来选择哪些节点可以运行节点代理。nodeSelector字段是推荐的节点选择约束的最简单形式。

指定的任何标签都必须与每个节点上的标签匹配。

在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点。

$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""

DPA.spec.configuration.nodeAgent.podConfig.nodeSelector中使用与用于标记节点相同的自定义标签。例如:

configuration:
  nodeAgent:
    enable: true
    podConfig:
      nodeSelector:
        node-role.kubernetes.io/nodeAgent: ""

以下示例是nodeSelector的反模式,除非节点上同时存在'node-role.kubernetes.io/infra: ""''node-role.kubernetes.io/worker: ""'这两个标签,否则无效。

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/infra: ""
            node-role.kubernetes.io/worker: ""

为OpenShift Data Foundation上的灾难恢复创建对象桶声明

如果您在OpenShift Data Foundation上使用集群存储作为您的多云对象网关(MCG)桶backupStorageLocation,请使用OpenShift Web控制台创建对象桶声明(OBC)。

未能配置对象桶声明(OBC)可能会导致备份不可用。

除非另有说明,“NooBaa”指提供轻量级对象存储的开源项目,而“多云对象网关(MCG)”指Red Hat的NooBaa发行版。

有关MCG的更多信息,请参阅使用您的应用程序访问多云对象网关

步骤

在DataProtectionApplication CR中启用CSI

您可以在DataProtectionApplication自定义资源(CR)中启用容器存储接口(CSI),以便使用CSI快照备份持久卷。

先决条件
  • 云提供商必须支持CSI快照。

步骤
  • 编辑DataProtectionApplication CR,如下例所示。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi (1)
    1 添加csi默认插件。

在DataProtectionApplication中禁用节点代理

如果您没有使用ResticKopiaDataMover进行备份,则可以禁用DataProtectionApplication自定义资源 (CR) 中的nodeAgent字段。在禁用nodeAgent之前,请确保OADP Operator处于空闲状态且未运行任何备份。

步骤
  1. 要禁用nodeAgent,请将enable标志设置为false。请参见以下示例。

    DataProtectionApplication CR示例
    # ...
    configuration:
      nodeAgent:
        enable: false  (1)
        uploaderType: kopia
    # ...
    1 禁用节点代理。
  2. 要启用nodeAgent,请将enable标志设置为true。请参见以下示例。

    DataProtectionApplication CR示例
    # ...
    configuration:
      nodeAgent:
        enable: true  (1)
        uploaderType: kopia
    # ...
    1 启用节点代理。

您可以设置一个作业来启用和禁用DataProtectionApplication CR中的nodeAgent字段。有关更多信息,请参见“使用作业在Pod中运行任务”。