4.8. 使用 IBM Cloud 配置 OADP


您可以在 IBM Cloud 集群上安装 OpenShift API for Data Protection (OADP) Operator,以便在集群上备份和恢复应用程序。您可以配置 IBM Cloud Object Storage (COS)来存储备份。

4.8.1.1. 配置 COS 实例

您可以创建一个 IBM Cloud Object Storage (COS) 实例来存储 OADP 备份数据。创建 COS 实例后,配置 HMAC 服务凭据。

先决条件

  • 您有一个 IBM Cloud Platform 帐户。
  • 已安装 IBM Cloud CLI
  • 登录到 IBM Cloud。

流程

  1. 运行以下命令来安装 IBM Cloud Object Storage (COS) 插件:

    $ ibmcloud plugin install cos -f
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来设置存储桶名称:

    $ BUCKET=<bucket_name>
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令来设置存储桶区域:

    $ REGION=<bucket_region> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定存储桶区域,如 eu-gb
  4. 运行以下命令来创建资源组:

    $ ibmcloud resource group-create <resource_group_name>
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令来设置目标资源组:

    $ ibmcloud target -g <resource_group_name>
    Copy to Clipboard Toggle word wrap
  6. 运行以下命令验证目标资源组是否已正确设置:

    $ ibmcloud target
    Copy to Clipboard Toggle word wrap

    输出示例

    API endpoint:     https://cloud.ibm.com
    Region:
    User:             test-user
    Account:          Test Account (fb6......e95) <-> 2...122
    Resource group:   Default
    Copy to Clipboard Toggle word wrap

    在示例输出中,资源组设置为 Default

  7. 运行以下命令来设置资源组名称:

    $ RESOURCE_GROUP=<resource_group> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定资源组名称,例如 "default"
  8. 运行以下命令来创建 IBM Cloud service-instance 资源:

    $ ibmcloud resource service-instance-create \
    <service_instance_name> \
    1
    
    <service_name> \
    2
    
    <service_plan> \
    3
    
    <region_name> 
    4
    Copy to Clipboard Toggle word wrap
    1
    service-instance 资源指定一个名称。
    2
    指定服务名称。或者,您可以指定一个服务 ID。
    3
    指定 IBM Cloud 帐户的服务计划。
    4
    指定区域名称。

    示例命令

    $ ibmcloud resource service-instance-create test-service-instance cloud-object-storage \ 
    1
    
    standard \
    global \
    -d premium-global-deployment 
    2
    Copy to Clipboard Toggle word wrap

    1
    服务名称是 cloud-object-storage
    2
    -d 标志指定部署名称。
  9. 运行以下命令来提取服务实例 ID:

    $ SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')
    Copy to Clipboard Toggle word wrap
  10. 运行以下命令来创建 COS 存储桶:

    $ ibmcloud cos bucket-create \//
    --bucket $BUCKET \//
    --ibm-service-instance-id $SERVICE_INSTANCE_ID \//
    --region $REGION
    Copy to Clipboard Toggle word wrap

    $BUCKET, $SERVICE_INSTANCE_ID, 和 $REGION 等值会被您在前面设置的值替代。

  11. 运行以下命令来创建 HMAC 凭据。

    $ ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}
    Copy to Clipboard Toggle word wrap
  12. HMAC 凭证中提取访问密钥 ID 和 secret 访问密钥,并将它们保存到 credentials-velero 文件中。您可以使用 credentials-velero 文件为备份存储位置创建 secret。运行以下命令:

    $ cat > credentials-velero << __EOF__
    [default]
    aws_access_key_id=$(ibmcloud resource service-key test-key -o json  | jq -r '.[0].credentials.cos_hmac_keys.access_key_id')
    aws_secret_access_key=$(ibmcloud resource service-key test-key -o json  | jq -r '.[0].credentials.cos_hmac_keys.secret_access_key')
    __EOF__
    Copy to Clipboard Toggle word wrap

4.8.1.2. 创建默认 Secret

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

注意

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

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

先决条件

  • 您的对象存储和云存储(若有)必须使用相同的凭证。
  • 您必须为 Velero 配置对象存储。

流程

  1. 为您的云供应商为备份存储位置创建一个 credentials-velero 文件。
  2. 使用默认名称创建 Secret 自定义资源(CR):

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap

在安装 Data Protection Application 时,secret 会在 DataProtectionApplication CR 的 spec.backupLocations.credential 块中引用。

4.8.1.3. 为不同凭证创建 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
    Copy to Clipboard Toggle word wrap
  3. 为您的对象存储创建一个用于备份位置的 credentials-velero 文件。
  4. 使用自定义名称为备份位置创建 Secret

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  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>
    Copy to Clipboard Toggle word wrap
    1
    具有自定义名称的备份位置 Secret

4.8.1.4. 安装数据保护应用程序

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

先决条件

  • 您必须安装 OADP Operator。
  • 您必须将对象存储配置为备份位置。
  • 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
  • 如果备份和快照位置使用相同的凭证,您必须创建带有默认名称 cloud-credentialsSecret

    注意

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

流程

  1. Operators Installed Operators 并选择 OADP Operator。
  2. Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例
  3. YAML View 并更新 DataProtectionApplication 清单的参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      namespace: openshift-adp
      name: <dpa_name>
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - aws
          - csi
      backupLocations:
        - velero:
            provider: aws 
    1
    
            default: true
            objectStorage:
              bucket: <bucket_name> 
    2
    
              prefix: velero
            config:
              insecureSkipTLSVerify: 'true'
              profile: default
              region: <region_name> 
    3
    
              s3ForcePathStyle: 'true'
              s3Url: <s3_url> 
    4
    
            credential:
              key: cloud
              name: cloud-credentials 
    5
    Copy to Clipboard Toggle word wrap
    1
    当使用 IBM Cloud 作为备份存储位置时,供应商是 aws
    2
    指定 IBM Cloud Object Storage (COS) 存储桶名称。
    3
    指定 COS 区域名称,如 eu-gb
    4
    指定 COS 存储桶的 S3 URL。例如,http://s3.eu-gb.cloud-object-storage.appdomain.cloud。在这里,eu-gb 是区域名称。根据您的存储桶区域替换区域名称。
    5
    使用 access key 和 secret access key 从 HMAC 凭证定义您创建的 secret 名称。
  4. Create

验证

  1. 运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    输出示例

    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
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令,验证 DataProtectionApplication (DPA) 是否已协调:

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    输出示例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. 验证 type 被设置为 Reconciled
  4. 运行以下命令,验证备份存储位置并确认 PHASEAvailable

    $ oc get backupstoragelocations.velero.io -n openshift-adp
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

4.8.1.5. 设置 Velero CPU 和内存分配

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

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 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
    Copy to Clipboard Toggle word wrap
    1
    指定要提供给 Velero podSpec 的节点选择器。
    2
    列出的 resourceAllocations 用于平均使用。
注意

Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。

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

4.8.1.6. 配置节点代理和节点标签

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

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

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

$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
Copy to Clipboard Toggle word wrap

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

configuration:
  nodeAgent:
    enable: true
    podConfig:
      nodeSelector:
        node-role.kubernetes.io/nodeAgent: ""
Copy to Clipboard Toggle word wrap

以下示例是 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: ""
Copy to Clipboard Toggle word wrap

4.8.1.7. 使用客户端 burst 和 QPS 设置配置 DPA

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

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

先决条件

  • 已安装 OADP Operator。

流程

  • 在 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
    Copy to Clipboard Toggle word wrap

    1
    指定 client-burst 值。在本例中,client-burst 字段设置为 500。
    2
    指定 client-qps 值。在本例中,client-qps 字段设置为 300。

4.8.1.8. 覆盖 DPA 中的 imagePullPolicy 设置

在 OADP 1.4.0 或更早版本中,Operator 会将 Velero 和节点代理 pod 的 imagePullPolicy 字段设置为 Always

在 OADP 1.4.1 或更高版本中,Operator 首先检查每个镜像是否有 sha256sha512 摘要,并相应地设置 imagePullPolicy 字段:

  • 如果镜像有摘要,Operator 会将 imagePullPolicy 设置为 IfNotPresent
  • 如果镜像没有摘要,Operator 会将 imagePullPolicy 设置为 Always

您还可以使用 Data Protection Application (DPA)中的 spec.imagePullPolicy 字段覆盖 imagePullPolicy 字段。

先决条件

  • 已安装 OADP Operator。

流程

  • 在 DPA 中配置 spec.imagePullPolicy 字段,如下例所示:

    数据保护应用程序示例

    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: kopia
        velero:
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
            - csi
      imagePullPolicy: Never 
    1
    Copy to Clipboard Toggle word wrap

    1
    指定 imagePullPolicy 的值。在本例中,imagePullPolicy 字段设置为 Never

4.8.1.9. 使用多个 BSL 配置 DPA

您可以使用多个 BackupStorageLocation (BSL) CR 配置 DataProtectionApplication (DPA) 自定义资源 (CR),并指定云供应商提供的凭证。

例如,在配置了以下两个 BSLs 时:

  • 在 DPA 中配置了一个 BSL,并将它设置为默认的 BSL。
  • 使用 BackupStorageLocation CR 独立创建另一个 BSL。

因为您已通过 DPA 创建 BSL 作为默认值,您无法再次设置独立创建的 BSL 作为默认值。这意味着,在任何给定时间,您只能将一个 BSL 设置为默认的 BSL。

先决条件

  • 您必须安装 OADP Operator。
  • 您必须使用云供应商提供的凭证创建 secret。

流程

  1. 使用多个 BackupStorageLocation CR 配置 DataProtectionApplication CR。请参见以下示例:

    DPA 示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    #...
    backupLocations:
      - name: aws 
    1
    
        velero:
          provider: aws
          default: true 
    2
    
          objectStorage:
            bucket: <bucket_name> 
    3
    
            prefix: <prefix> 
    4
    
          config:
            region: <region_name> 
    5
    
            profile: "default"
          credential:
            key: cloud
            name: cloud-credentials 
    6
    
      - name: odf 
    7
    
        velero:
          provider: aws
          default: false
          objectStorage:
            bucket: <bucket_name>
            prefix: <prefix>
          config:
            profile: "default"
            region: <region_name>
            s3Url: <url> 
    8
    
            insecureSkipTLSVerify: "true"
            s3ForcePathStyle: "true"
          credential:
            key: cloud
            name: <custom_secret_name_odf> 
    9
    
    #...
    Copy to Clipboard Toggle word wrap

    1
    为第一个 BSL 指定名称。
    2
    此参数表示此 BSL 是默认的 BSL。如果没有在 Backup CR 中设置 BSL,则会使用默认的 BSL。您只能将一个 BSL 设置为默认值。
    3
    指定存储桶名称。
    4
    为 Velero 备份指定一个前缀,如 velero
    5
    指定存储桶的 AWS 区域。
    6
    指定您创建的默认 Secret 对象的名称。
    7
    为第二个 BSL 指定名称。
    8
    指定 S3 端点的 URL。
    9
    Secret 指定正确的名称;例如,custom_secret_name_odf。如果没有指定 Secret 名称,则使用默认名称。
  2. 指定要在备份 CR 中使用的 BSL。请参见以下示例。

    备份 CR 示例

    apiVersion: velero.io/v1
    kind: Backup
    # ...
    spec:
      includedNamespaces:
      - <namespace> 
    1
    
      storageLocation: <backup_storage_location> 
    2
    
      defaultVolumesToFsBackup: true
    Copy to Clipboard Toggle word wrap

    1
    指定要备份的命名空间。
    2
    指定存储位置。

如果您没有在备份中使用 ResticKopiaDataMover,您可以在 DataProtectionApplication 自定义资源(CR)中禁用 nodeAgent 字段。在禁用 nodeAgent 前,请确保 OADP Operator 闲置且没有运行任何备份。

流程

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

    DataProtectionApplication CR 示例

    # ...
    configuration:
      nodeAgent:
        enable: false  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    禁用节点代理。
  2. 要启用 nodeAgent,将 enable 标志设置为 true。请参见以下示例:

    DataProtectionApplication CR 示例

    # ...
    configuration:
      nodeAgent:
        enable: true  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    启用节点代理。

您可以设置一个作业来启用和禁用 DataProtectionApplication CR 中的 nodeAgent 字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat