详情页标题前

阿里云容器服务ACK通过命令行工具实现备份和恢复-云淘科技

详情页1

您可以通过kubectl命令行在集群中部署备份仓库、应用备份、应用恢复的CR资源,实现备份中心的相应功能。本文介绍如何通过命令行工具使用备份中心备份和恢复集群应用。

前提条件

已安装备份服务组件并完成对应权限的配置。具体操作,请参见安装备份服务组件并配置权限。

使用场景

  • 因权限问题,无法通过容器服务控制台操作备份中心。

  • 容灾备份流程需要自动化实现。

注意事项

  • 备份及恢复任务不能通过命令行工具中的delete指令简单删除。具体操作,请参见下文步骤四:删除集群备份中心的相关资源。

  • 关注备份中心组件migrate-controller版本发布情况,并及时升级。具体操作,请参见管理组件。

  • 请勿删除下文示例代码中出现的配置参数,避免备份恢复失败。

步骤一:创建备份仓库

  1. 使用以下内容,在备份集群和恢复集群中创建backuplocation.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: BackupLocation
    metadata:
      name: 
      namespace: csdr
    spec:
      backupSyncPeriod: 0s
      config:
        network: internal
        region: cn-beijing
      objectStorage:
        bucket: 
        prefix: 
      provider: alibabacloud

    其余参数无需设置,保持默认配置即可。

    参数

    说明

    name

    备份仓库的名称,须符合K8s命名规则。

    network

    OSS Bucket的网络访问方式。取值:

    • internal:内网访问模式,所有关联集群与OSS Bucket需处于同一地域。

    • public:公网访问模式,无地域限制。

    region

    OSS Bucket所在地域。

    bucket

    OSS Bucket名称,需提前创建,且名称符合以cnfs-oss-****开头的命名规则。

    prefix

    可选,OSS Bucket子目录。设定该参数后,实际备份内容存储在此子目录下。

  2. 分别在备份集群和恢复集群中执行以下命令,部署backuplocation对象。

    kubectl apply -f backuplocation.yaml
  3. 分别在备份集群和恢复集群中执行以下命令,查看backuplocation的状态。

    kubectl describe backuplocation  -n csdr

    预期输出:

    ...
    Status:
      Last Validation Time:  2022-12-08T04:00:22Z
      Message:               success by csdr-controller
      Phase:                 Available

    由预期输出可看到,已创建的备份仓库状态为Available,说明当前集群有访问OSS的权限并可以直接访问。

步骤二:创建备份任务

创建立即备份任务

  1. 使用以下内容,在备份集群中创建applicationbackup.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: ApplicationBackup
    metadata:
      annotations:
        csdr.alibabacloud.com/backuplocations: >-
          {"name":"","region":"cn-beijing","bucket":"","prefix":"","provider":"alibabacloud"}}
      name: 
      namespace: csdr
    spec:
      includedNamespaces:
        - default
      includedResources:
        - statefulset
      excludedResources:
        - deployment
      labelSelector:
        matchLabels:
          app: mysql-sts
      pvBackup:
        defaultPvBackup: false
      storageLocation: 
      ttl: 720h0m0s

    其余参数无需设置,保持默认配置即可。

    参数

    说明

    csdr.alibabacloud.com/backuplocations

    备份所在的备份仓库信息,需与备份仓库的配置一致。

    name

    立即备份任务的名称。

    includedNamespaces

    指定命名空间名称。

    includedResources

    可选,指定集群资源类型。

    重要

    为避免非预期备份结果,includedResources和excludedResources您只需配置一项。当两者均为空时,表示备份所有资源类型。

    excludedResources

    可选,排除集群资源类型。

    重要

    为避免非预期备份结果,includedResources和excludedResources您只需配置一项。当两者均为空时,表示备份所有资源类型。

    matchLabels

    可选,指定标签,只备份符合的资源。

    defaultPvBackup

    是否备份存储卷,开启数据备份。取值:

    • true:备份应用和存储卷。

    • false:只备份应用。

    storageLocation

    备份仓库名称。

    说明

    若您的集群已使用Velero,请加入钉钉用户群(钉钉群号:35532895)咨询。

    ttl

    备份有效期,备份任务的数据存储有效期,过期之后数据将无法恢复。格式如720h0m0s,取值范围:24h0m0s~1572864h0m0s。

  2. 在备份集群中执行以下命令,部署applicationbackup对象。

    kubectl apply -f applicationbackup.yaml
  3. 在备份集群中执行以下命令,查看立即备份任务的状态。

    kubectl describe applicationbackup  -n csdr

    预期输出:

    ...
    Status:
      Completion Timestamp:  2022-12-05T15:02:35Z
      Expiration:            2023-01-04T15:02:25Z
      Message:               success
      Phase:                 Completed

    当立即备份任务由Inprogress转为Completed状态,说明立即备份任务创建成功。

创建定时备份计划

  1. 使用以下内容,在备份集群中创建backupschedule.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: BackupSchedule
    metadata:
      annotations:
        csdr.alibabacloud.com/backuplocations: >-
          {"name":"","region":"cn-beijing","bucket":"","prefix":"","provider":"alibabacloud"}
      name: 
      namespace: csdr
    spec:
      schedule: 1 4 * * *
      template:
        includedNamespaces:
          - default
        includedResources:
          - statefulset
        excludedResources:
          - deployment
        labelSelector:
          matchLabels:
            app: mysql-sts
        pvBackup:
          defaultPvBackup: true
        storageLocation: 
        ttl: 720h0m0s

    其余参数无需设置,保持默认配置即可。

    参数

    说明

    csdr.alibabacloud.com/backuplocations

    备份所在的备份仓库信息,需与备份仓库的配置一致。

    name

    立即备份任务的名称。

    schedule

    备份周期,使用Cron表达式。

    includedNamespaces

    指定命名空间名称。

    includedResources

    可选,指定集群资源类型。

    重要

    为避免非预期备份结果,includedResources和excludedResources您只需配置一项。当两者均为空时,表示备份所有资源类型。

    excludedResources

    可选,排除集群资源类型。

    重要

    为避免非预期备份结果,includedResources和excludedResources您只需配置一项。当两者均为空时,表示备份所有资源类型。

    matchLabels

    可选,指定标签,只备份符合的资源。

    defaultPvBackup

    是否备份存储卷,开启数据备份。取值:

    • true:备份应用和存储卷。

    • false:只备份应用。

    storageLocation

    备份仓库名称。

    说明

    若您的集群已使用Velero,请加入钉钉用户群(钉钉群号:35532895)咨询。

    ttl

    备份有效期,备份任务的数据存储有效期,过期之后数据将无法恢复。格式如720h0m0s,取值范围:24h0m0s~1572864h0m0s。

  2. 在备份集群中执行以下命令,部署backupschedule对象。

    kubectl apply -f backupschedule.yaml
  3. 在备份集群中执行以下命令,查看定时备份计划的状态。

    kubectl describe backupschedule  -n csdr

    预期输出:

    ...
    Status:
      Last Backup:          2022-12-07T20:01:11Z
      Last Processed Time:  2022-12-08T13:05:37Z
      Phase:                Enabled

    当定时备份计划状态为Enabled,说明定时备份计划创建成功。

  4. 在备份集群中执行以下命令,查看定期创建的备份。

    kubectl get applicationbackup -n csdr | grep 

    预期输出:

    -20221205225845   2d22h
    -20221206040104   2d17h
    -20221207040137   41h
    -20221208040111   17h

步骤三:创建恢复任务

  1. 使用以下内容,在恢复集群中创建applicationrestore.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: ApplicationRestore
    metadata:
        csdr.alibabacloud.com/backuplocations: >-
          {"name":"","region":"cn-beijing","bucket":"","prefix":"","provider":"alibabacloud"}
      name: 
      namespace: csdr
    spec:
      appRestoreOnly: false
      preserveNodePorts: true
      includedNamespaces:
        - default
      includedResources:
        - statefulset
      excludedResources:
        - secret
      backupName: 
      namespaceMapping:
        : 

    其余参数无需设置,保持默认配置即可。

    参数

    说明

    csdr.alibabacloud.com/backuplocations

    备份所在的备份仓库信息,需与备份仓库的配置一致。

    name

    恢复任务的名称。

    appRestoreOnly

    可选,对于备份了存储卷的备份,是否仅恢复应用,不恢复存储声明、存储卷及其对应的数据,取值:

    • true:仅恢复应用。如果您需要更改备份应用的数据源,可以先手动创建存储声明、存储卷,然后再创建恢复任务并将该参数设置为true。

    • false:恢复应用以及相关的存储数据,默认为false。

    preserveNodePorts

    可选,是否保持应用的NodePort端口。当备份集群与恢复集群相同时,默认为false,将随机修改端口值,避免与已有的同类应用冲突。否则设置为true。

    includedNamespaces

    指定恢复的命名空间名称。设置为空时,表示恢复所有已备份的命名空间。

    includedResources

    可选,指定待恢复的集群资源类型。

    重要

    为避免非预期备份结果,includedResources和excludedResources您只需配置一项。均为空时,表示恢复所有已备份的资源类型。

    excludedResources

    可选,排除待恢复的集群资源类型。

    重要

    为避免非预期备份结果,includedResources和excludedResources您只需配置一项。均为空时,表示恢复所有已备份的资源类型。

    backupName

    待恢复的备份名称。使用定期备份功能时,需要指定为某个时间点创建的备份名称,例如-20221205225845。

    namespaceMapping

    可选,重定义命名空间。取值:

    • :创建备份任务时指定的备份集群命名空间。

    • :根据备份创建的资源在恢复集群的所在命名空间。若不设置,则默认在同名命名空间中恢复。

    说明

    若不存在,将创建新的命名空间。

  2. 在恢复集群中执行以下命令,部署applicationrestore对象。

    kubectl apply -f applicationrestore.yaml
  3. 在恢复集群中执行以下命令,查看恢复任务的状态。

    kubectl describe applicationrestore  -n csdr

    预期输出:

    ...
    Status:
      Completion Timestamp:  2022-12-05T15:52:19Z
      Phase:                 Completed
      Start Timestamp:       2022-12-05T15:52:09Z

    当恢复任务由Inprogress转为Completed状态,说明恢复任务创建成功。

步骤四:删除集群备份中心的相关资源

重要

由于您已创建的备份仓库可能正在被其他集群使用,所以备份中心不支持备份仓库BackupLocation资源的删除。

删除定时备份计划

执行以下命令,删除定时备份计划BackupSchedule资源,停止定时备份。

kubectl delete backupschedule  - ncsdr

删除备份任务或恢复任务

  1. 使用以下内容,在待删除任务的集群中创建deleterequest.yaml文件。

    apiVersion: csdr.alibabacloud.com/v1beta1
    kind: DeleteRequest
    metadata:
      name: 
      namespace: csdr
    spec:
      deleteObjectName: 
      deleteObjectType: "Backup"

    其余参数无需设置,保持默认配置即可。

    参数

    说明

    name

    删除请求的名称。

    • 删除备份任务时:待删除的备份任务ApplicationBackup的名称+“-dbr”。

    • 删除恢复任务时:待删除的恢复任务ApplicationRestore的名称+“-dbr”。

    deleteObjectName

    待删除的资源名称。

    deleteObjectType

    待删除的资源类型。取值:

    • “Backup”:删除备份任务ApplicationBackup及配套资源。

    • “Restore”:删除恢复任务ApplicationRestore及配套资源。

    说明

    • 删除备份任务不会影响已同步到集群中的副本。

    • 删除恢复任务不会影响已恢复的内容。

  2. 在待删除任务的集群中执行以下命令,部署deleterequest删除请求。

    kubectl apply -f deleterequest.yaml
  3. 使用以下命令,查看资源状态。

    • 查看删除的备份任务

      • 执行以下命令,查看删除备份任务的状态。

        kubectl get applicationbackup  -n csdr

        预期输出:

        Error from server (NotFound): applicationbackups.csdr.alibabacloud.com "yourApplicationBackupName" not found

        由预期输出可看到,备份任务资源已被删除。

      • 执行以下命令,查看删除请求资源的状态。

        kubectl get deleterequest  -n csdr

        预期输出:

        Error from server (NotFound): deleterequests.csdr.alibabacloud.com "yourApplicationBackupName-dbr" not found

        由预期输出可看到,除备份任务资源被删除外,删除请求的相关资源也自动被删除。

    • 查看删除的恢复任务

      • 执行以下命令,查看删除备份任务的状态。

        kubectl get applicationrestore  -n csdr

        预期输出:

        Error from server (NotFound): applicationrestores.csdr.alibabacloud.com "yourApplicationRestoreName" not found

        由预期输出可看到,恢复任务资源已被删除。

      • 执行以下命令,查看删除请求资源的状态。

        kubectl get deleterequest  -n csdr

        预期输出:

        Error from server (NotFound): deleterequests.csdr.alibabacloud.com "yourApplicationRestoreName-dbr" not found

        由预期输出可看到,除恢复任务资源被删除外,删除请求的相关资源也自动被删除。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158420.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 腾讯云高性能计算平台CAM 服务角色授权-云小二

    操作场景 在使用高性能计算平台(TencentCloud High Performance Computing,THPC)的过程中,涉及使用相关云资源。为了能正常使用高性能计算平台的功能,您需要对高性能计算平台的服务角色进行授权,授权后才能使用相关云资源。当您首次使用高性能计算平台时,需前往访问管理页面为当前账号授予腾讯云服务网格操作云服务器 CVM、弹性伸…

    2023年12月9日
  • 腾讯云Serverless应用中心对象存储 COS 组件-同尘科技

    操作场景 对象存储 COS 组件是 serverless-tencent 组件库中的基础组件之一。通过对象存储 COS 组件,可以快速且方便地创建、配置和管理腾讯云的 COS 存储桶。 前提条件 已安装 Node.js。注意2020年9月1日起,Serverless 组件不再支持 Node.js10.0 以下版本,请注意升级。 操作步骤 安装 已经安装 Se…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云负载均衡实例规格对比

    CLB 实例规格分为:共享型和性能容量型。 对比项 共享型 性能容量型  规格上限 每分钟并发连接数:50,000,每秒新建连接数:5,000,每秒查询数:5,000  标准型 每分钟并发连接数:100,000,每秒新建连接数:10,000,每秒查询数:10,000,带宽上限:2Gbps   高阶型1 每分钟并发连接数:200,000,每秒新建连接数:…

    腾讯云 2023年12月9日
  • 腾讯云内容分发网络CDN离线缓存

    配置场景 当您的源站故障,即无法正常回源拉取资源时,若开启了离线缓存,则可使用 CDN 缓存内容。若节点有缓存,则返回缓存内容。即使命中的内容已过期,仍响应已过期的内容,直到源站恢复,可正常回源。若节点无缓存,则正常返回源站故障的报错信息。注意CDN 回源时源站不返回状态码和头部定义为源站故障。离线缓存暂仅支持中国境内加速域名。部分平台正在升级中,暂未开放此…

    2023年12月9日
  • 腾讯云对象存储图像智能裁剪

    简介 本文档提供关于图像智能裁剪的相关 API 概览以及 SDK 示例代码。 API 操作描述 图像智能裁剪 腾讯云数据万象通过 AIImageCrop 接口对图像进行智能裁剪,支持持久化、云上处理及下载时处理。 SDK API 参考 SDK 所有接口的具体参数与方法说明,请参考 SDK API。 图像智能裁剪 功能说明 腾讯云数据万象通过 AIImag…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。