CN112099989A - 一种Kubernetes云原生应用灾备、迁移与恢复的方法 - Google Patents
一种Kubernetes云原生应用灾备、迁移与恢复的方法 Download PDFInfo
- Publication number
- CN112099989A CN112099989A CN202010885685.8A CN202010885685A CN112099989A CN 112099989 A CN112099989 A CN 112099989A CN 202010885685 A CN202010885685 A CN 202010885685A CN 112099989 A CN112099989 A CN 112099989A
- Authority
- CN
- China
- Prior art keywords
- backup
- record
- controller
- recovery
- kubernets
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 114
- 230000005012 migration Effects 0.000 title claims abstract description 26
- 238000013508 migration Methods 0.000 title claims abstract description 26
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 9
- 238000003860 storage Methods 0.000 claims description 76
- 230000002085 persistent effect Effects 0.000 claims description 16
- 238000013500 data storage Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000004519 manufacturing process Methods 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 2
- 229920003266 Leaf® Polymers 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明公开了一种Kubernetes云原生应用灾备、迁移与恢复的方法,属于云原生的技术领域。包括如下步骤:初始化系统到主集群中,创建一系列的自定义资源以及相关的控制器,如果出错则重试,直至没有错误,并进入下一步;对象控制器通过Minio的API将kubernetes对象存储至Minio,通过restic将PV数据备份存储至Minio;操作控制器将所有信息通过kube‑apiserver保存到etcd中,并监控定时任务,如果有相关的定时任务,则创建对应的备份记录BackupLog或恢复记录RestoreLog,通过kube‑apiserver保存到etcd中,再由kube‑apiserver触发对应的控制器处理。本发明能够将应用灾备功能沉淀至平台层,降低应用灾备成本和生产问题定位对业务的影响。
Description
技术领域
本发明属于云原生的技术领域,尤其涉及一种K ubernetes云原生应用灾备、迁移与恢复的方法。
背景技术
近年来,容器技术和Kubernetes平台持续升温,Kubernetes极大地提高了应用部署的速度和可管理性。全球范围内各行各业都在这一轻量级虚拟化方案上进行着积极而富有成效的探索,由于其灵活性、可扩展性和易用性,Kubernetes已成为容器编排器的事实标准,迅速落地并赋能产业,大大提高了资源利用效率和生产力。
Kubernetes平台构建了许多与应用语言无关的特性,然而kubernetes平台的应用灾备、迁移与恢复功能没有实现,应用在灾备方面或依靠语言框架的工具实现、或将灾备逻辑写入代码逻辑中、或完全无视灾备需求。
诚然,kubernetes社区中有使用集群联邦功能,据此可以进行集群和应用灾备使用。除去集群联邦功能尚未稳定的因素,使用集群联邦用于灾备,一方面成本将成倍上升,另一方面,基于集群联邦的灾备无法做到有状态应用的备份与恢复,局限性较大。
如果能将应用灾备功能沉淀至平台层,对于应用方面,应用无额外成本即可获得灾备的特性,更多精力投入到业务应用中,同时支持混合云部署,能够快速还原生产环境至本地环境,降低问题定位对业务的影响。对于平台方面,平台将能更好服务客户,实现客户与平台的双赢。
发明内容
本发明的发明目的是提供一种Kubernetes云原生应用灾备、迁移与恢复的方法,能够将应用灾备功能沉淀至平台层,降低应用灾备成本和生产问题定位对业务的影响。
为达到上述目的,本发明所采用的技术方案是:
一种Kubernetes云原生应用灾备、迁移与恢复的方法,包括如下步骤:
S1、初始化系统到主集群中,创建一系列的自定义资源以及相关的控制器,如果出错则重试,直至没有错误,并进入下一步;其中控制器包括备份控制器、一个恢复控制器、一个操作控制器和一个对象存储控制器;所述自定义资源包括:
Backups,其用于定义某次系统备份的kubernetes对象;
Locations,其用于定义Kubernetes集群资源的数据存放位置或PV快照存放位置的kubernetes对象,可以将备份存储在多个位置;
Restores,其用于定义还原的kubernetes对象,创建后,系统将根据配置立即或按时启动,还原数据;
Schedules,其用于定义备份还原日程的kubernetes对象;
DeleteLog,其用于定义删除备份的kubernetes对象;
BackupLog,其用于定义备份请求的kubernetes对象;
RestoreLog,其用于定义恢复备份请求的kubernetes对象;
S2、对象控制器通过Minio的API将kubernetes对象存储至Minio,通过restic将PV数据备份存储至Minio;其中restic是一个快速,高性能,并且安全的备份工具,Minio是一个对象存储服务,存储大容量非结构化的数据,PV数据是kubernetes的一种资源,全称为Persistent Volumes;
S3、操作控制器将所有信息通过kube-apiserver保存到etcd中,并监控定时任务,如果有相关的定时任务,则创建对应的备份记录BackupLog或恢复记录RestoreLog,通过kube-apiserver保存到etcd中,再由kube-apiserver触发对应的控制器处理,其中etcd是kubernetes数据存储位置;
S4、备份控制器备份kubernetes对象和PV快照,并将其上传保存到对象存储控制器;
S5、恢复控制器通过读取对象存储控制器的内容,恢复备份到本集群中。
进一步的,所述步骤S2的运行步骤如下:
S2.1、对象存储控制器拉起Restic服务和Minio服务运行至本集群中,对象存储控制器暴露Restic服务和Minio服务端口,生成Minio备份的id和密钥文件;
S2.2、对象存储控制器生成一条所述步骤S1类型为Locations的记录,描述集群备份的相关信息;
S2.3、对象存储控制器保持在后台运行,等待备份控制器的存入和恢复控制器的读取。
进一步的,所述步骤S3中的操作步骤如下:
S3.1、创建备份任务:创建备份任务时,将创建一条类型为Backups的记录,并指明其为父备份任务;
S3.2、删除备份任务:将删除对应的一条Backups,不会从集群中删除由这条任务创建的其它对象;
S3.3、创建/删除定时任务:将创建/删除一条类型为Schedules的记录,每一条记录对应的一条备份任务Backups或恢复任务Restores,和一个根据Linux定时任务标准写法cron定义定时任务运行时间;
S3.4:创建备份位置:将创建一条类型为Locations的记录,可以创建另一个集群中的备份位置信息,用于应用迁移;
S3.5、备份:将创建一条类型为BackupLog的记录,记录本次备份信息,根据S3.1的备份任务,触发备份控制器生成备份,如果包含多个备份位置,则将本集群的备份推送到其他位置。
S3.6、创建恢复任务:通过备份时间、备份名等信息查询对象存储控制器,创建一条类型为Restores的记录,用于应用快速恢复到最新备份;
S3.7、恢复:通过选择一条恢复任务Restores记录,创建一条类型为RestoreLog的记录,记录本次恢复信息,RestoreLog记录关联一条BackupLog记录,通过选择恢复任务相关的版本,可恢复到最新版本或恢复到特定版本,恢复到最新版本即将当时最新的版本号记录到;
S3.8、迁移:首次使用迁移功能需提前在备kubernetes集群中运行灾备系统,主kubernetes集群进行步骤S3.5后,在备kubernetes集群中执行步骤S3.7完成迁移;
S3.9、后台运行定时任务:每分钟由相关的定时任务,则创建对应的备份记录BackupLog或恢复记录RestoreLog,通过kube-apiserver保存到etcd中,再由kube-apiserver触发对应的控制器处理。
进一步的,所述步骤S4的运行步骤如下:
S4.1、备份控制器初始化时,通过kube-apiserver注册监听灾备系统的crd资源BackupLog的变动:
S4.2、备份控制器收到kube-apiserver通知,系统新创建了一条类型为BackupLog的记录,备份控制器查询该记录的详细信息,生成版本号并标记开始备份FlagStarted,回写BackupLog记录,如果备份类型为Namespace,进入步骤S4.3,如类型为PersistentVolumes,进入步骤S4.8,如类型为其它kubernetes资源对象,进入步骤S4.9。
S4.3、备份的类型为Namespace,遍历该namespace下的资源,如果存在且符合筛选条件,进入步骤S4.4,遍历结束后进入步骤S4.10,备份控制器将会拆分父备份任务为若干个包含具体资源类型的子背负任务;
S4.4、生成某特定类型的关联子BackupLog记录,如果如果该资源为Pods类型,进入步骤S4.5,否则进入步骤S4.7;
S4.5、扫描该Pod资源是否包含PV挂载,如果包含则生成类型为PersistentVolumes的关联子BackupLog,进入步骤S4.6,否则进入步骤S4.7;
S4.6、根据步骤S4.5中的子BackupLog信息,通过PV备份工具Restic将快照备份到对象存储控制器,同时将子BackupLog信息记录到对象存储控制器;
S4.7、根据步骤S4.4中的BackupLog信息,通过kube-apiserver获取备份的资源信息,将数据备份到对象存储控制器,同时将子BackupLog信息记录到对象存储控制器,返回步骤S4.3。
S4.8、通过PV备份工具Restic将快照备份到对象存储控制器,进入步骤S4.10.
S4.9、通过kube-apiserver获取备份的资源信息,将数据备份到对象存储控制器;
S4.10、备份本BackupLog记录和子BackupLog记录到对象存储控制器;
S4.11、查询本次BackupLog是否包含多个备份地址Locations。如果包含多个备份地址Locations,触发对象存储控制器同步至其它集群的对象存储控制器OSController,并等待其他备份完成;
S4.12、将本BackupLog记录标记为全部备份结束FlagAllFinished。
进一步的,步骤S5的运行步骤如下:
S5.1、恢复控制器初始化时,通过kube-apiserver注册监听灾备系统的crd资源RestoreLog的变动;
S5.2、恢复控制器收到kube-apiserver通知:系统新创建了一条类型为RestoreLog;
S5.3、恢复控制器通过本次RestoreLog信息查询对象存储控制器对应的数据,解析备份的第一条BackupLog信息,如果备份类型为Namespace,恢复备份数据中的Namespace信息到本地集群,标记该Backuplog已操作;
S5.4、循环解析未操作的BackupLog记录,如类型为Persistent Volumes,进入步骤S5.5,如类型为其它kubernetes资源对象,进入步骤S5.6,如果解析完成,进入步骤S5.7
S5.5、解析BackupLog信息,通过PV备份工具Restic将快照从对象存储控制器恢复到集群,标记该Backuplog已完成,返回步骤S5.4;
S5.6、解析BackupLog信息,通过kube-apiserver,将kubernetes对象从对象存储控制器恢复到集群,标记该Backuplog已完成,返回步骤5.4;
S5.7、标记第一条BackupLog为已完成,恢复完成。。
由于采用上述技术方案,本发明具有以下有益效果:
本发明提供了一种Kubernetes应用灾备、迁移与恢复的方法及系统,将应用灾备功能沉淀至平台,通过4个组件:备份控制器、恢复控制器、操作控制器、对象存储控制器与kubernetes入口kube-apiserver的协同,将应用的编排与持久化PV数据保存到一个内置的对象存储服务中,对象存储间自动同步数据应用无额外成本即可获得灾备的特性,能够快速还原生产环境至本地环境或其它备用生产环境,更多精力投入到业务逻辑中。
附图说明
图1是本发明组件初始化的系统流程图;
图2是本发明组件逻辑的流程图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
如图1-2所示,本发明公开了一种构建Kubernetes云原生应用灾备、迁移与恢复的方法及系统(以下简称灾备系统),包括4个组件:一个备份控制器(BackupController)、一个恢复控制器(RestoreController)、一个操作控制器(OperationController)、一个对象存储控制器(OSController)。运行灾备系统的集群既可以备份其它集群的应用,也可以备份自己集群的应用。
灾备系统会在kubernetes集群中创建各种CRD以及相关的控制器,通过对CRD对象的操作完成备份、恢复行为。每次备份都形成一个版本,恢复时可选择恢复成特定版本。
kubernetes拥有一些内置的资源,比如说Pod,Deployment,ReplicaSet等等,CRD(CustomResourceDefinitions,自定义资源)是用户可以自定义的资源,用来扩展kubernetes的功能。Kube-apiserver是kubernetes集群的入口,etcd是kubernetes数据存储位置,Restic是一个文件系统备份的开源工具。
Persistent Volumes是kubernetes的一种资源(以下简称PV),容器Pods挂载PV后将其视为普通磁盘,进行读写和存储数据。
灾备系统备份和恢复的数据包含两个部分:1.通过kube-apiserver获取etcd的数据后备份;2.通过Restic备份PV快照。通过对两者的备份和恢复,从而达到应用备份和恢复的目的。
除非特别指定,本方案所述几个控制器均为当前集群的控制器。本方案的Kubernetes云原生应用的灾备、迁移与恢复的方法及系统包括如下步骤:
步骤1:初始化系统到主kubernetes集群中,创建一系列的CRD(自定义资源)以及相关的控制器。如果出错则重试,直至没有错误。当三个控制器正常运行时表示准入系统正常运行。步骤2-5分别为对象存储控制器、操作控制器、备份控制器、恢复控制器的说明。给组件独立运行,各自的信息均写入kubernetes系统中,相互之间没有依赖关系。
CRD自定义资源包括:
-Backups,用于定义某次系统备份的kubernetes对象
-Locations,用于定义Kubernetes集群资源的数据存放位置或PV快照存放位置的kubernetes对象,可以将备份存储在多个位置。
-Restores,用于定义还原的kubernetes对象,创建后,系统将根据配置立即或按时启动,还原数据。
-Schedules,用于定义备份还原日程的kubernetes对象。
-DeleteLog,用于定义删除备份的kubernetes对象。
-BackupLog,用于定义备份请求的kubernetes对象。
-RestoreLog,用于定义恢复备份请求的kubernetes对象。
控制器包括:
-BackupController,备份控制器
-RestoreController,恢复控制器
-OperationController,操作控制器
-OSController,对象存储控制器
步骤2:对象存储控制器OSController主要控制Restic和Minio进行kubernetes对象和PV数据备份。restic是一个快速,高性能,并且安全的备份工具。Minio是一个对象存储服务,存储大容量非结构化的数据。对象存储控制器OSController通过Minio的API将kubernetes对象存储至Minio,通过restic将PV数据备份存储至Minio。其运行步骤如下:
步骤2.1:对象存储控制器OSController拉起Restic服务和Minio服务运行至本集群中。对象存储控制器暴露Restic服务和Minio服务端口,生成Minio备份的id和密钥文件。
步骤2.2:对象存储控制器OSController生成一条步骤1描述的类型为Locations的记录,描述集群备份的相关信息。
步骤2.3:对象存储控制器OSController保持在后台运行,等待备份控制器的存入和恢复控制器的读取。
步骤3:操作控制器OperationController主要完成两个工作:1.由用户交互操作,所有信息通过kube-apiserver保存到etcd中。2.监控定时任务,如果由相关的定时任务,则创建对应的备份记录BackupLog或恢复记录RestoreLog,通过kube-apiserver保存到etcd中,再由kube-apiserver触发对应的控制器处理。
可以进行如下操作:
步骤3.1:创建备份任务。创建备份任务时,将创建一条类型为Backups的记录,并指明其为父备份任务(参考步骤1中的自定义资源),步骤4.3中备份控制器将会拆分父备份任务为若干个包含具体资源类型的子背负任务。
父备份任务和子备份任务均需指定备份名和备份类型。可以备份如下类型:
-Namespace,默认调用kube-apiserver备份该Namespace下所有资源对象到步骤2中的对象存储控制器,包括cronjob、job、daemonSet、deployment、pod、replica set、stateful set、ingress、service、configmap、persistent volume claim、secret、endpoint、event、limitrange、podtemplates、resourcequota、serviceaccount、controllerrevision、localsubjectaccessreviews、horizontalpodautoscalers、leases、endpointslices、networkpolicies、poddisruptionbudgets、rolebindings、roles;以及CRD组件自定义的与namespace相关的资源。
-Persistent Volumes,调用Restic备份PV快照到步骤2中的对象存储控制器OSController。
-Namespace和Persistent Volumes以外的任意kubernetes资源对象。
在根据类型进行备份的基础上,可以进一步细分筛选:
-根据kubernetes中资源注解annotation指定或排除资源,例如注解格式为”caih.com/include”、”caih.com/exclude”等,格式可在系统初始化时配置。
备份任务还包含以下信息:
-备份有效期,过期将自动标准失效。
-备份位置,根据灾备系统中的自定义资源Locations指定备份位置,可包含多个备份位置。
步骤3.2:删除备份任务。将删除对应的一条Backups,不会从集群中删除由这条任务创建的其它对象。
步骤3.3:创建/删除定时任务。将创建/删除一条类型为Schedules的记录(参考步骤1中的自定义资源)。每一条记录对应的一条备份任务Backups或恢复任务Restores,和一个根据Linux定时任务标准写法cron定义定时任务运行时间。
步骤3.4:创建备份位置。将创建一条类型为Locations的记录(参考步骤1中的自定义资源)。可以创建另一个集群中的备份位置信息,用于应用迁移。
步骤3.5:备份。将创建一条类型为BackupLog的记录(参考步骤1中的自定义资源),记录本次备份信息。根据步骤3.1的备份任务,触发备份控制器生成备份。如果包含多个备份位置,则将本集群的备份推送到其他位置。
步骤3.6:创建恢复任务。通过备份时间、备份名等信息查询对象存储控制器OSController,创建一条类型为Restores的记录(参考步骤1中的自定义资源),用于应用快速恢复到最新备份。
步骤3.7:恢复。通过选择一条恢复任务Restores记录,创建一条类型为RestoreLog的记录(参考步骤1中的自定义资源),记录本次恢复信息。RestoreLog记录关联一条BackupLog记录。通过选择恢复任务相关的版本,可恢复到最新版本或恢复到特定版本。恢复到最新版本即将当时最新的版本号记录到。
步骤3.8:迁移。首次使用迁移功能需提前在备kubernetes集群中运行灾备系统,主kubernetes集群进行步骤3.5后,在备kubernetes集群中执行步骤3.7完成迁移。
步骤3.9:后台运行定时任务。每分钟由相关的定时任务,则创建对应的备份记录BackupLog或恢复记录RestoreLog,通过kube-apiserver保存到etcd中,再由kube-apiserver触发对应的控制器处理。
步骤4:备份控制器(BackupController)用于备份kubernetes对象和PV快照,并将其上传保存到对象存储控制器OSController。其运行步骤如下:
步骤4.1:备份控制器初始化时,通过kube-apiserver注册监听灾备系统的crd资源BackupLog的变动:
步骤4.2:备份控制器收到kube-apiserver通知,系统新创建了一条类型为BackupLog的记录,备份控制器查询该记录的详细信息,生成版本号并标记开始备份FlagStarted,回写BackupLog记录。如果备份类型为;Namespace,进入步骤4.3,如类型为Persistent Volumes,进入步骤4.8,如类型为其它kubernetes资源对象,进入步骤4.9。
步骤4.3:备份的类型为Namespace,遍历该namespace下的资源,如果存在且符合筛选条件,进入步骤4.4,遍历结束后进入步骤4.10。
步骤4.4:生成某特定类型的关联子BackupLog记录,如果如果该资源为Pods类型,进入步骤4.5,否则进入步骤4.7,
步骤4.5:扫描该Pod资源是否包含PV挂载,如果包含则生成类型为PersistentVolumes的关联子BackupLog,进入步骤4.6,否则进入步骤4.7
步骤4.6:根据步骤4.5中的子BackupLog信息,通过PV备份工具Restic将快照备份到对象存储控制器OSController,同时将子BackupLog信息记录到对象存储控制器OSController。进入下一步。
步骤4.7:根据步骤4.4中的BackupLog信息,通过kube-apiserver获取备份的资源信息,将数据备份到对象存储控制器OSController,同时将子BackupLog信息记录到对象存储控制器OSController。返回步骤4.3。
步骤4.8:通过PV备份工具Restic将快照备份到对象存储控制器OSController。进入步骤4.10.
步骤4.9:通过kube-apiserver获取备份的资源信息,将数据备份到对象存储控制器OSController。进入步骤4.10.
步骤4.10:备份本BackupLog记录和子BackupLog记录到对象存储控制器OSController。
步骤4.11:查询本次BackupLog是否包含多个备份地址Locations。如果包含多个备份地址Locations,触发对象存储控制器OSController同步至其它集群的对象存储控制器OSController,并等待其他备份完成。
步骤4.12:将本BackupLog记录标记为全部备份结束FlagAllFinished。
步骤5:恢复控制器(RestoreController)通过读取对象存储控制器OSController的内容,恢复备份到本集群中。其中恢复集群既可以与备份一个集群,也可以是步骤4中Locations描述的其它集群,运行步骤如下:
步骤5.1:恢复控制器初始化时,通过kube-apiserver注册监听灾备系统的crd资源RestoreLog的变动。
步骤5.2:恢复控制器收到kube-apiserver通知:系统新创建了一条类型为RestoreLog。
步骤5.3:恢复控制器通过本次RestoreLog信息查询对象存储控制器OSController对应的数据,解析备份的第一条BackupLog信息。如果备份类型为;Namespace,恢复备份数据中的Namespace信息到本地集群,标记该Backuplog已操作。进入下一步。
步骤5.4:循环解析未操作的BackupLog记录,如类型为Persistent Volumes,进入步骤5.5,如类型为其它kubernetes资源对象,进入步骤5.6。如果解析完成,进入步骤5.7
步骤5.5:解析BackupLog信息,通过PV备份工具Restic将快照从对象存储控制器OSController恢复到集群,标记该Backuplog已完成,返回步骤5.4。
步骤5.6:解析BackupLog信息,通过kube-apiserver,将kubernetes对象从对象存储控制器OSController恢复到集群,标记该Backuplog已完成,返回步骤5.4。
步骤5.7:标记第一条BackupLog为已完成。恢复完成。
上述说明是针对本发明较佳实施例的详细说明,但实施例并非用以限定本发明的专利申请范围,凡本发明所提示的技术精神下所完成的同等变化或修饰变更,均应属于本发明所涵盖专利范围。
Claims (5)
1.一种Kubernetes云原生应用灾备、迁移与恢复的方法,其特征在于,包括如下步骤:
S1、初始化系统到主集群中,创建一系列的自定义资源以及相关的控制器,如果出错则重试,直至没有错误,并进入下一步;其中控制器包括备份控制器、一个恢复控制器、一个操作控制器和一个对象存储控制器;所述自定义资源包括:
Backups,其用于定义某次系统备份的kubernetes对象;
Locations,其用于定义Kubernetes集群资源的数据存放位置或PV快照存放位置的kubernetes对象,可以将备份存储在多个位置;
Restores,其用于定义还原的kubernetes对象,创建后,系统将根据配置立即或按时启动,还原数据;
Schedules,其用于定义备份还原日程的kubernetes对象;
DeleteLog,其用于定义删除备份的kubernetes对象;
BackupLog,其用于定义备份请求的kubernetes对象;
RestoreLog,其用于定义恢复备份请求的kubernetes对象;
S2、对象控制器通过Minio的API将kubernetes对象存储至Minio,通过restic将PV数据备份存储至Minio;其中restic是一个快速,高性能,并且安全的备份工具,Minio是一个对象存储服务,存储大容量非结构化的数据,PV数据是kubernetes的一种资源,全称为Persistent Volumes;
S3、操作控制器将所有信息通过kube-apiserver保存到etcd中,并监控定时任务,如果有相关的定时任务,则创建对应的备份记录BackupLog或恢复记录RestoreLog,通过kube-apiserver保存到etcd中,再由kube-apiserver触发对应的控制器处理,其中etcd是kubernetes数据存储位置;
S4、备份控制器备份kubernetes对象和PV快照,并将其上传保存到对象存储控制器;
S5、恢复控制器通过读取对象存储控制器的内容,恢复备份到本集群中。
2.如权利要求1所述的Kubernetes云原生应用灾备、迁移与恢复的方法,其特征在于,所述步骤S2的运行步骤如下:
S2.1、对象存储控制器拉起Restic服务和Minio服务运行至本集群中,对象存储控制器暴露Restic服务和Minio服务端口,生成Minio备份的id和密钥文件;
S2.2、对象存储控制器生成一条所述步骤S1类型为Locations的记录,描述集群备份的相关信息;
S2.3、对象存储控制器保持在后台运行,等待备份控制器的存入和恢复控制器的读取。
3.如权利要求1所述的Kubernetes云原生应用灾备、迁移与恢复的方法,其特征在于,所述步骤S3中的操作步骤如下:
S3.1、创建备份任务:创建备份任务时,将创建一条类型为Backups的记录,并指明其为父备份任务;
S3.2、删除备份任务:将删除对应的一条Backups,不会从集群中删除由这条任务创建的其它对象;
S3.3、创建/删除定时任务:将创建/删除一条类型为Schedules的记录,每一条记录对应的一条备份任务Backups或恢复任务Restores,和一个根据Linux定时任务标准写法cron定义定时任务运行时间;
S3.4:创建备份位置:将创建一条类型为Locations的记录,可以创建另一个集群中的备份位置信息,用于应用迁移;
S3.5、备份:将创建一条类型为BackupLog的记录,记录本次备份信息,根据S3.1的备份任务,触发备份控制器生成备份,如果包含多个备份位置,则将本集群的备份推送到其他位置。
S3.6、创建恢复任务:通过备份时间、备份名等信息查询对象存储控制器,创建一条类型为Restores的记录,用于应用快速恢复到最新备份;
S3.7、恢复:通过选择一条恢复任务Restores记录,创建一条类型为RestoreLog的记录,记录本次恢复信息,RestoreLog记录关联一条BackupLog记录,通过选择恢复任务相关的版本,可恢复到最新版本或恢复到特定版本,恢复到最新版本即将当时最新的版本号记录到;
S3.8、迁移:首次使用迁移功能需提前在备kubernetes集群中运行灾备系统,主kubernetes集群进行步骤S3.5后,在备kubernetes集群中执行步骤S3.7完成迁移;
S3.9、后台运行定时任务:每分钟由相关的定时任务,则创建对应的备份记录BackupLog或恢复记录RestoreLog,通过kube-apiserver保存到etcd中,再由kube-apiserver触发对应的控制器处理。
4.如权利要求1所述的Kubernetes云原生应用灾备、迁移与恢复的方法,其特征在于,所述步骤S4的运行步骤如下:
S4.1、备份控制器初始化时,通过kube-apiserver注册监听灾备系统的crd资源BackupLog的变动:
S4.2、备份控制器收到kube-apiserver通知,系统新创建了一条类型为BackupLog的记录,备份控制器查询该记录的详细信息,生成版本号并标记开始备份FlagStarted,回写BackupLog记录,如果备份类型为Namespace,进入步骤S4.3,如类型为PersistentVolumes,进入步骤S4.8,如类型为其它kubernetes资源对象,进入步骤S4.9。
S4.3、备份的类型为Namespace,遍历该namespace下的资源,如果存在且符合筛选条件,进入步骤S4.4,遍历结束后进入步骤S4.10,备份控制器将会拆分父备份任务为若干个包含具体资源类型的子背负任务;
S4.4、生成某特定类型的关联子BackupLog记录,如果如果该资源为Pods类型,进入步骤S4.5,否则进入步骤S4.7;
S4.5、扫描该Pod资源是否包含PV挂载,如果包含则生成类型为Persistent Volumes的关联子BackupLog,进入步骤S4.6,否则进入步骤S4.7;
S4.6、根据步骤S4.5中的子BackupLog信息,通过PV备份工具Restic将快照备份到对象存储控制器,同时将子BackupLog信息记录到对象存储控制器;
S4.7、根据步骤S4.4中的BackupLog信息,通过kube-apiserver获取备份的资源信息,将数据备份到对象存储控制器,同时将子BackupLog信息记录到对象存储控制器,返回步骤S4.3。
S4.8、通过PV备份工具Restic将快照备份到对象存储控制器,进入步骤S4.10.
S4.9、通过kube-apiserver获取备份的资源信息,将数据备份到对象存储控制器;
S4.10、备份本BackupLog记录和子BackupLog记录到对象存储控制器;
S4.11、查询本次BackupLog是否包含多个备份地址Locations。如果包含多个备份地址Locations,触发对象存储控制器同步至其它集群的对象存储控制器OSController,并等待其他备份完成;
S4.12、将本BackupLog记录标记为全部备份结束FlagAllFinished。
5.如权利要求1所述的Kubernetes云原生应用灾备、迁移与恢复的方法,其特征在于,步骤S5的运行步骤如下:
S5.1、恢复控制器初始化时,通过kube-apiserver注册监听灾备系统的crd资源RestoreLog的变动;
S5.2、恢复控制器收到kube-apiserver通知:系统新创建了一条类型为RestoreLog;
S5.3、恢复控制器通过本次RestoreLog信息查询对象存储控制器对应的数据,解析备份的第一条BackupLog信息,如果备份类型为Namespace,恢复备份数据中的Namespace信息到本地集群,标记该Backuplog已操作;
S5.4、循环解析未操作的BackupLog记录,如类型为Persistent Volumes,进入步骤S5.5,如类型为其它kubernetes资源对象,进入步骤S5.6,如果解析完成,进入步骤S5.7
S5.5、解析BackupLog信息,通过PV备份工具Restic将快照从对象存储控制器恢复到集群,标记该Backuplog已完成,返回步骤S5.4;
S5.6、解析BackupLog信息,通过kube-apiserver,将kubernetes对象从对象存储控制器恢复到集群,标记该Backuplog已完成,返回步骤5.4;
S5.7、标记第一条BackupLog为已完成,恢复完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010885685.8A CN112099989A (zh) | 2020-08-28 | 2020-08-28 | 一种Kubernetes云原生应用灾备、迁移与恢复的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010885685.8A CN112099989A (zh) | 2020-08-28 | 2020-08-28 | 一种Kubernetes云原生应用灾备、迁移与恢复的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112099989A true CN112099989A (zh) | 2020-12-18 |
Family
ID=73758298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010885685.8A Pending CN112099989A (zh) | 2020-08-28 | 2020-08-28 | 一种Kubernetes云原生应用灾备、迁移与恢复的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099989A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113112023A (zh) * | 2021-06-15 | 2021-07-13 | 苏州浪潮智能科技有限公司 | 一种推理平台的推理服务管理方法、装置、系统及介质 |
CN113391952A (zh) * | 2021-06-07 | 2021-09-14 | 北京同创永益科技发展有限公司 | 一种云原生环境基于lvm快照的自动化备份方法 |
CN113672350A (zh) * | 2021-08-20 | 2021-11-19 | 深信服科技股份有限公司 | 一种应用处理方法、装置及相关设备 |
CN113742033A (zh) * | 2021-09-08 | 2021-12-03 | 广西东信数建信息科技有限公司 | 一种kubernetes集群联邦系统及其实现方法 |
CN114153660A (zh) * | 2021-11-29 | 2022-03-08 | 平安壹账通云科技(深圳)有限公司 | 一种数据库备份方法、装置、服务器及介质 |
CN114584559A (zh) * | 2022-03-07 | 2022-06-03 | 浪潮云信息技术股份公司 | 一种实现声明式管理容器云的方法及装置 |
CN114661420A (zh) * | 2022-03-28 | 2022-06-24 | 江苏安超云软件有限公司 | 基于Kubernetes容器平台的应用保护方法、装置及系统 |
CN115098301A (zh) * | 2022-07-13 | 2022-09-23 | 上海道客网络科技有限公司 | 一种云原生场景下有状态应用的快照生成方法和系统 |
CN115174364A (zh) * | 2022-06-30 | 2022-10-11 | 济南浪潮数据技术有限公司 | 一种容灾场景下的数据还原方法、装置以及介质 |
US11734136B1 (en) | 2022-02-11 | 2023-08-22 | International Business Machines Corporation | Quick disaster recovery in distributed computing environment |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708188B1 (en) * | 2000-09-19 | 2004-03-16 | Bocada, Inc. | Extensible method for obtaining an historical record of data backup activity (and errors) and converting same into a canonical format |
CN109614202A (zh) * | 2018-12-04 | 2019-04-12 | 北京京东尚科信息技术有限公司 | 容器环境的备份、恢复以及镜像处理方法和系统 |
CN110661657A (zh) * | 2019-09-23 | 2020-01-07 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的网络安全监控方法及其系统 |
US20200133795A1 (en) * | 2018-10-26 | 2020-04-30 | EMC IP Holding Company LLC | Smart dynamic restore for kubernetes based applications |
CN111338854A (zh) * | 2020-05-25 | 2020-06-26 | 南京云信达科技有限公司 | 基于Kubernetes集群快速恢复数据的方法及系统 |
-
2020
- 2020-08-28 CN CN202010885685.8A patent/CN112099989A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708188B1 (en) * | 2000-09-19 | 2004-03-16 | Bocada, Inc. | Extensible method for obtaining an historical record of data backup activity (and errors) and converting same into a canonical format |
US20200133795A1 (en) * | 2018-10-26 | 2020-04-30 | EMC IP Holding Company LLC | Smart dynamic restore for kubernetes based applications |
CN109614202A (zh) * | 2018-12-04 | 2019-04-12 | 北京京东尚科信息技术有限公司 | 容器环境的备份、恢复以及镜像处理方法和系统 |
CN110661657A (zh) * | 2019-09-23 | 2020-01-07 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的网络安全监控方法及其系统 |
CN111338854A (zh) * | 2020-05-25 | 2020-06-26 | 南京云信达科技有限公司 | 基于Kubernetes集群快速恢复数据的方法及系统 |
Non-Patent Citations (3)
Title |
---|
IMIKE: "你有快速备份和迁移 Kubernetes 集群应用以及持久化数据的需求吗,Velero 助你秒实现!", pages 1 - 6, Retrieved from the Internet <URL:https://cloud.tencent.com/developer/article/1534154> * |
常见-YOUMEN: "kubernetes备份恢复之velero", pages 1 - 13, Retrieved from the Internet <URL:https://www.cnblogs.com/you-men/p/14324585.html> * |
闫_先_生_: "Velero 助你快速备份和迁移 Kubernetes 集群", pages 1 - 6, Retrieved from the Internet <URL:https://blog.csdn.net/zongyimin/article/details/107691738> * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113391952B (zh) * | 2021-06-07 | 2022-03-11 | 北京同创永益科技发展有限公司 | 一种云原生环境基于lvm快照的自动化备份方法 |
CN113391952A (zh) * | 2021-06-07 | 2021-09-14 | 北京同创永益科技发展有限公司 | 一种云原生环境基于lvm快照的自动化备份方法 |
CN113112023B (zh) * | 2021-06-15 | 2021-08-31 | 苏州浪潮智能科技有限公司 | AIStation推理平台的推理服务管理方法和装置 |
CN113112023A (zh) * | 2021-06-15 | 2021-07-13 | 苏州浪潮智能科技有限公司 | 一种推理平台的推理服务管理方法、装置、系统及介质 |
US11994958B2 (en) | 2021-06-15 | 2024-05-28 | Inspur Suzhou Intelligent Technology Co., Ltd. | Inference service management method, apparatus and system for inference platform, and medium |
CN113672350A (zh) * | 2021-08-20 | 2021-11-19 | 深信服科技股份有限公司 | 一种应用处理方法、装置及相关设备 |
CN113672350B (zh) * | 2021-08-20 | 2023-12-29 | 深信服科技股份有限公司 | 一种应用处理方法、装置及相关设备 |
CN113742033A (zh) * | 2021-09-08 | 2021-12-03 | 广西东信数建信息科技有限公司 | 一种kubernetes集群联邦系统及其实现方法 |
CN114153660A (zh) * | 2021-11-29 | 2022-03-08 | 平安壹账通云科技(深圳)有限公司 | 一种数据库备份方法、装置、服务器及介质 |
US11734136B1 (en) | 2022-02-11 | 2023-08-22 | International Business Machines Corporation | Quick disaster recovery in distributed computing environment |
CN114584559A (zh) * | 2022-03-07 | 2022-06-03 | 浪潮云信息技术股份公司 | 一种实现声明式管理容器云的方法及装置 |
CN114661420A (zh) * | 2022-03-28 | 2022-06-24 | 江苏安超云软件有限公司 | 基于Kubernetes容器平台的应用保护方法、装置及系统 |
CN114661420B (zh) * | 2022-03-28 | 2023-08-11 | 安超云软件有限公司 | 基于Kubernetes容器平台的应用保护方法、装置及系统 |
CN115174364A (zh) * | 2022-06-30 | 2022-10-11 | 济南浪潮数据技术有限公司 | 一种容灾场景下的数据还原方法、装置以及介质 |
CN115098301A (zh) * | 2022-07-13 | 2022-09-23 | 上海道客网络科技有限公司 | 一种云原生场景下有状态应用的快照生成方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099989A (zh) | 一种Kubernetes云原生应用灾备、迁移与恢复的方法 | |
US11321291B2 (en) | Persistent version control for data transfer between heterogeneous data stores | |
EP1851636B1 (en) | Systems and methods for dynamic data backup | |
US7689597B1 (en) | Mirrored storage architecture using continuous data protection techniques | |
US8949183B2 (en) | Continuous and asynchronous replication of a consistent dataset | |
US7509358B1 (en) | Performing replication operations on continuous data protection systems using pseudosnapshots | |
US7971091B1 (en) | Network configuration backup and restore operations using continuous data protection | |
US7603395B1 (en) | Using pseudosnapshots for continuous data protection systems to surface a copy of data | |
CN109582443A (zh) | 基于分布式存储技术的虚拟机备份系统 | |
US9223797B2 (en) | Reparse point replication | |
US7765190B1 (en) | Pseudosnapshot creation and implementation using continuous data protection | |
CN106294009A (zh) | 数据库归档方法及系统 | |
CN101477486A (zh) | 一种基于扇区重组的文件备份恢复方法 | |
CN101253484A (zh) | 利用客户端应用程序的单次客户端快照的创建 | |
US8762347B1 (en) | Method and apparatus for processing transactional file system operations to enable point in time consistent file data recreation | |
CN109298978B (zh) | 一种指定位置的数据库集群的恢复方法及系统 | |
US20220121523A1 (en) | Identifying database backup copy chaining | |
CN107229540A (zh) | 一种基于时间点的数据库恢复方法及系统 | |
US20240045770A1 (en) | Techniques for using data backup and disaster recovery configurations for application management | |
CN113656149A (zh) | 一种应用处理方法、装置及相关设备 | |
CN112800019A (zh) | 基于Hadoop分布式文件系统的数据备份方法及系统 | |
CN113672350A (zh) | 一种应用处理方法、装置及相关设备 | |
US11079960B2 (en) | Object storage system with priority meta object replication | |
US10387262B1 (en) | Federated restore of single instance databases and availability group database replicas | |
US11093465B2 (en) | Object storage system with versioned meta objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |