创建应用备份策略
您可通过创建应用备份策略,指定需要备份的应用数据范围(以命名空间为单位)、备份数据存储位置、备份方式等信息,每基于策略执行一次备份,即可生成一个新的备份记录,方便您随时或周期性地自动备份运行在集群命名空间下的应用等业务资源数据。
前提条件
- 
已为当前集群 部署备份恢复组件 。 
- 
如需将集群的资源数据备份在外部存储中,请提前准备好外部储存的对接信息。目前,仅支持对接 S3(Simple Storage Service)兼容的对象存储(Object Storage),例如:Amazon S3、MinIO、腾讯云对象存储 COS、华为云对象存储 OBS、阿里云对象存储 OSS 等。 
注意事项
- 
若需备份应用数据,您可选择备份持久卷声明(PVC),此时不支持备份 与 hostpath类型持久卷绑定的持久卷声明。
- 
为保证数据的可靠性和完整性,不建议备份数据库的数据,例如:MySQL-PXC、Redis 数据库。若有数据备份需求,请切换至 Data Services 进行数据备份。 
- 
在执行备份过程中,建议不要在待备份的命名空间下进行任何读写、更新、删除等操作,以免在备份过程中造成数据差异,导致最终迁移后的数据不一致。 
操作步骤
基本信息
- 
在左侧导航栏中,单击 集群管理 > 备份恢复。 
- 
切换至 备份管理 页签。 
- 
单击 创建备份策略 > 创建应用备份,参考以下说明,配置相关参数。 - 
备份资源类型:Kubernetes 资源 包括用户创建的命名空间中所有 Kubernetes 资源文件;持久卷声明 为平台中用户创建的持久卷声明,用于备份与之绑定的持久卷中的应用数据,且不支持备份与 hostpath类型持久卷绑定的持久卷声明。提示: - 
若您的持久卷声明使用的存储资源 回收策略 为 保留,则仅需备份 Kubernetes 资源即可。 
- 
若您的持久卷声明使用的存储资源 回收策略 为 删除,则需备份 Kubernetes 资源和持久卷声明。 
 
- 
- 
备份仓库:选择连通性校验通过的备份仓库,或单击 创建备份仓库 。 提示:创建备份仓库完成后可单击 确定并创建应用备份,返回本页面继续创建;或单击 创建,返回备份仓库列表页查看已创建的备份仓库。 
 
- 
- 
配置基本信息后,单击 下一步。 
备份资源
备份命名空间下的应用资源。
注意:
- 
若集群中存在未导入的命名空间,则在本页面将不展示,如需备份其下的资源,请将该命名空间先导入至项目。 
- 
为保证数据的可靠性和完整性,不建议备份数据库的数据,例如:MySQL-PXC、Redis 数据库。若有数据备份需求,请切换至 Data Services 进行数据备份。 
- 
单选或多选需要备份的 命名空间。 提示:当备份的资源类型选择 备份 Kubernetes 资源和持久卷声明 时,可在持久卷声明列查看命名空间下所有的持久卷声明。 
- 
单击 下一步。 
备份方式
配置备份数据的时间策略。
- 
仅备份一次:策略创建成功后会立即执行一次备份, 配置 备份保留时长 后,超出保留时长的备份文件会被系统自动清理。 
- 
定时备份:设置定时 备份规则,定期自动执行备份策略备份数据,支持输入 Crontab 表达式。详细设置方法可参考 如何设置定时触发规则? 。 配置 备份保留时长 后,超出保留时长的备份文件会被系统自动清理。 提示: - 
单击输入框,可展开平台预设的 备份规则模板, 选择适合的模板并简单修改后即可快速设置备份规则。 
- 
根据您选择的 备份资源类型 不同,建议合理配置定时备份规则。当类型选择 备份 Kubernetes 资源和持久卷声明 时,最低备份频率为一天一次;当类型选择 备份 Kubernetes 资源 时,最低备份频率为一小时一次。 
 
- 
高级配置
自定义钩子程序(Hooks)是运行在集群容器中的扩展命令。通过自定义钩子程序,可以在备份、恢复过程中灵活执行一些自定义操作,若有特殊配置需求请联系技术支持人员。
- 备份 Hook
执行备份任务过程中,当一个 Pod 在被备份时,您可以设置一条或多条命令在 Pod 内的容器上执行。这些命令可以在 Pod 备份前执行(pre),或 Pod 备份操作完成后执行(post)。
hook 可以在 schedule 资源的 .spec.template.spec.hooks 字段下或 backup 资源的 .spec.hooks 字段下进行配置。
配置示例及参数说明如下:
hooks:
    resources:
      -
        # Hook 的名称,会在日志内展示。
        name: my-hook
                # (可选)执行该 Hook 的命名空间名称列表(数组)。如果不设置,Hook 会在集群的所有命名空间下执行。
        includedNamespaces:
        - '*'
        # (可选)不执行该 Hook 的命名空间名称列表(数组)。
        excludedNamespaces:
        - some-namespace
                # 执行该 Hook 的资源列表。目前仅支持 pods。
        includedResources:
        - pods
            # (可选)用于匹配执行该 Hook 的资源的标签选择器,仅匹配到的资源会执行该 Hook。
        labelSelector:
          matchLabels:
            app: velero
            component: server
        # Pod 执行备份前执行的 Hook 的列表(数组)。仅支持 exec 类型的 Hook。
        pre:
          -
            exec:
                # (可选)执行命令的容器名。如果不设置,默认选择 Pod 内的第一个容器。
              container: my-container
              # 执行的命令,为数组,必须设置。
              command:
                - /bin/uname
                - -a
              # (可选)命令执行失败时的策略,有效值为 Continue 或 Fail,默认为 Fail。
              onError: Fail
              # (可选)等待命令执行完成的时长。默认为 30s。
              timeout: 10s
        # Pod 备份后执行的 Hook 的列表(数组),只支持 exec 类型的 Hook。
        post:
          # 请参考 pre 设置- 恢复 Hook
备份恢复组件支持在恢复任务执行期间或之后通过 Hook 执行一些自定义的操作。
对于恢复任务,支持以下两种类型的 Hook:
- 
initContainer 恢复 Hook:将 init conatiner(初始化容器)添加到恢复的 Pod 中,以便在应用程序容器启动之前执行一些必要的设置。 
- 
exec 恢复 Hook:用于在恢复的 Pod 的容器中执行命令或脚本。 
恢复 Hook 可以在 restore 资源的 .spec.hooks 字段下设置。配置示例及参数说明如下:
hooks:
    resources:
    # hook 名称
    - name: restore-hook-1
            # (可选)执行该 Hook 的命名空间名称列表(数组)。如果不设置,Hook 会在集群的所有命名空间下执行。
      includedNamespaces:
      - ns1
      # (可选)不执行该 Hook 的命名空间名称列表(数组)。
      excludedNamespaces:
      - ns3
            # 执行该 Hook 的资源列表。目前仅支持 pods。
      includedResources:
      - pods
            # (可选)用于匹配执行该 Hook 的资源的标签选择器,仅匹配到的资源会执行该 Hook。
      labelSelector:
        matchLabels:
          app: velero
          component: server
      # Hook 列表,仅支持 init 和 exec 类型的 Hook。
      postHooks:
      - init:
                    # 容器列表,这些容器会被添加到该 Hook 会执行的 initContainers 内。
          initContainers:
          - name: restore-hook-init1
            image: alpine:latest
            volumeMounts:
            - mountPath: /restores/pvc1-vm
              name: pvc1-vm
            command:
            - /bin/ash
            - -c
            - echo -n "FOOBARBAZ" >> /restores/pvc1-vm/foobarbaz
          - name: restore-hook-init2
            image: alpine:latest
            volumeMounts:
            - mountPath: /restores/pvc2-vm
              name: pvc2-vm
            command:
            - /bin/ash
            - -c
            - echo -n "DEADFEED" >> /restores/pvc2-vm/deadfeed
      - exec:
                # (可选)执行命令的容器名。如果不设置,默认选择 Pod 内的第一个容器。
            container: my-container
            # 执行的命令,为数组,必须设置。
            command:
              - /bin/uname
              - -a
            # (可选)命令执行失败时的策略,有效值为 Continue 或 Fail,默认为 Fail。
            onError: Fail
            # (可选)等待命令执行完成的时长。默认为 30s。
            timeout: 10s相关操作
手动执行备份策略
手动执行已创建的备份策略(包括设置了定时备份规则的策略)进行数据备份。 每执行一次,会生成一条新的备份记录。
- 
在左侧导航栏中,单击 集群管理 > 备份恢复。 
- 
切换至 备份管理 页签。 
- 
单击待执行策略右侧的  > 执行备份,并确认。 > 执行备份,并确认。
导出备份任务日志
支持手动导出指定备份策略下备份任务日志。
提示:备份任务正在执行中时不支持导出日志。
操作步骤
- 
在左侧导航栏中,单击 集群管理 > 备份恢复。 
- 
切换至 备份管理 页签。 
- 
单击待删除备份记录的 备份策略名称。 
- 
在 备份记录 区域,单击备份记录右侧的  > 导出日志。 > 导出日志。