您可以通过kubectl命令行在集群中部署备份仓库、应用备份、应用恢复的CR资源,实现备份中心的相应功能。本文介绍如何通过命令行工具使用备份中心备份和恢复集群应用。
前提条件
已安装备份服务组件并完成对应权限的配置。具体操作,请参见安装备份服务组件并配置权限。
使用场景
-
因权限问题,无法通过容器服务控制台操作备份中心。
-
容灾备份流程需要自动化实现。
注意事项
-
备份及恢复任务不能通过命令行工具中的
delete
指令简单删除。具体操作,请参见下文步骤四:删除集群备份中心的相关资源。 -
关注备份中心组件migrate-controller版本发布情况,并及时升级。具体操作,请参见管理组件。
-
请勿删除下文示例代码中出现的配置参数,避免备份恢复失败。
步骤一:创建备份仓库
-
使用以下内容,在备份集群和恢复集群中创建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子目录。设定该参数后,实际备份内容存储在此子目录下。
-
-
分别在备份集群和恢复集群中执行以下命令,部署backuplocation对象。
kubectl apply -f backuplocation.yaml
-
分别在备份集群和恢复集群中执行以下命令,查看backuplocation的状态。
kubectl describe backuplocation -n csdr
预期输出:
... Status: Last Validation Time: 2022-12-08T04:00:22Z Message: success by csdr-controller Phase: Available
由预期输出可看到,已创建的备份仓库状态为
Available
,说明当前集群有访问OSS的权限并可以直接访问。
步骤二:创建备份任务
创建立即备份任务
-
使用以下内容,在备份集群中创建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。
-
-
在备份集群中执行以下命令,部署applicationbackup对象。
kubectl apply -f applicationbackup.yaml
-
在备份集群中执行以下命令,查看立即备份任务的状态。
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
状态,说明立即备份任务创建成功。
创建定时备份计划
-
使用以下内容,在备份集群中创建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。
-
-
在备份集群中执行以下命令,部署backupschedule对象。
kubectl apply -f backupschedule.yaml
-
在备份集群中执行以下命令,查看定时备份计划的状态。
kubectl describe backupschedule -n csdr
预期输出:
... Status: Last Backup: 2022-12-07T20:01:11Z Last Processed Time: 2022-12-08T13:05:37Z Phase: Enabled
当定时备份计划状态为
Enabled
,说明定时备份计划创建成功。 -
在备份集群中执行以下命令,查看定期创建的备份。
kubectl get applicationbackup -n csdr | grep
预期输出:
-20221205225845 2d22h -20221206040104 2d17h -20221207040137 41h -20221208040111 17h
步骤三:创建恢复任务
-
使用以下内容,在恢复集群中创建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
可选,重定义命名空间。取值:
-
:创建备份任务时指定的备份集群命名空间。
-
:根据备份创建的资源在恢复集群的所在命名空间。若不设置,则默认在同名命名空间中恢复。
说明
若不存在,将创建新的命名空间。
-
-
在恢复集群中执行以下命令,部署applicationrestore对象。
kubectl apply -f applicationrestore.yaml
-
在恢复集群中执行以下命令,查看恢复任务的状态。
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
删除备份任务或恢复任务
-
使用以下内容,在待删除任务的集群中创建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及配套资源。
说明
-
删除备份任务不会影响已同步到集群中的副本。
-
删除恢复任务不会影响已恢复的内容。
-
-
在待删除任务的集群中执行以下命令,部署deleterequest删除请求。
kubectl apply -f deleterequest.yaml
-
使用以下命令,查看资源状态。
-
查看删除的备份任务
-
执行以下命令,查看删除备份任务的状态。
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