×

您在 IBM Cloud 集群上安装用于数据保护的 OpenShift API (OADP) 运算符,以备份和恢复集群上的应用程序。您配置 IBM Cloud 对象存储 (COS) 来存储备份。

配置 COS 实例

您创建 IBM Cloud 对象存储 (COS) 实例来存储 OADP 备份数据。创建 COS 实例后,配置HMAC服务凭据。

先决条件
  • 您拥有 IBM Cloud Platform 帐户。

  • 您已安装IBM Cloud CLI

  • 您已登录到 IBM Cloud。

步骤
  1. 运行以下命令安装 IBM Cloud 对象存储 (COS) 插件

    $ ibmcloud plugin install cos -f
  2. 运行以下命令设置存储桶名称

    $ BUCKET=<bucket_name>
  3. 运行以下命令设置存储桶区域

    $ REGION=<bucket_region> (1)
    1 指定存储桶区域,例如eu-gb
  4. 运行以下命令创建资源组

    $ ibmcloud resource group-create <resource_group_name>
  5. 运行以下命令设置目标资源组

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

    $ ibmcloud target
    示例输出
    API endpoint:     https://cloud.ibm.com
    Region:
    User:             test-user
    Account:          Test Account (fb6......e95) <-> 2...122
    Resource group:   Default

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

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

    $ RESOURCE_GROUP=<resource_group> (1)
    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)
    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)
    
    1 服务名称为cloud-object-storage
    2 -d标志指定部署名称。
  9. 运行以下命令提取服务实例 ID

    $ SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')
  10. 运行以下命令创建 COS 存储桶。

    $ ibmcloud cos bucket-create \//
    --bucket $BUCKET \//
    --ibm-service-instance-id $SERVICE_INSTANCE_ID \//
    --region $REGION

    例如$BUCKET$SERVICE_INSTANCE_ID$REGION之类的变量将被您之前设置的值替换。

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

    $ ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}
  12. HMAC凭据中提取访问密钥 ID 和秘密访问密钥,并将它们保存在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__

创建默认密钥

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

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,使用自定义名称。自定义名称在DataProtectionApplication自定义资源 (CR) 的spec.backupLocations块中指定。

  • 快照位置Secret,使用默认名称cloud-credentials。此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,使用自定义名称。

安装数据保护应用程序

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

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

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

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

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

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

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

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

  3. 点击YAML 视图并更新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)
    1 当您使用 IBM Cloud 作为备份存储位置时,提供商为aws
    2 指定 IBM Cloud 对象存储 (COS) 存储桶名称。
    3 指定 COS 区域名称,例如eu-gb
    4 指定 COS 存储桶的 S3 URL。例如,http://s3.eu-gb.cloud-object-storage.appdomain.cloud。此处,eu-gb 是区域名称。请根据您的存储桶区域替换区域名称。
    5 定义您使用来自HMAC凭据的访问密钥和密钥访问密钥创建的密钥的名称。
  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

设置 Velero CPU 和内存资源分配

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

先决条件
  • 您必须已安装用于数据保护的 OpenShift API (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 和内存需求。

配置节点代理和节点标签

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: ""

使用客户端突发和 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。

使用多个 BSL 配置 DPA

您可以使用多个 BSL 配置 DPA 并指定云提供商提供的凭据。

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

  • 您必须使用云提供商提供的凭据创建密钥。

步骤
  1. 使用多个 BSL 配置 DPA。请参见以下示例。

    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)
    #...
    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
    1 指定要备份的命名空间。
    2 指定存储位置。

在 DataProtectionApplication 中禁用节点代理

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

步骤
  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 中运行任务”。