基于Kubernetes,Velero 的相关操作包括: demand backup, scheduled backup, restore。 可以back up或者restore集群中的所有对象,也可以按照type, namespace, label相关标签选择back up或者restore。
backup operation:
拷贝kubernetes objects的压缩文件上传到cloud object storage(云对象存储)中.
调用cloud提供的API 接口, 创建persistent volumes的disk snapshots.
在backup时可以指定hooks.(hooks 相关连接https://velero.io/docs/v1.0.0/hooks/)[https://velero.io/docs/v1.0.0/hooks/].例如:执行快照前,可以tell 数据库刷新内存中的缓冲区到磁盘。
需要注意的是,群集备份并不是严格的原子备份,如果在备份时正在创建或者编辑kubernetes对象,则这些操作可能不包含在备份中。尽管出现不一致信息的几率较小,但是仍旧存在风险。
这里需要试验操作一下,检测是否有不一致信息的出现。
通过计划操作可以定期重复备份数据,第一次创建schedule时将执行第一次备份, 然后按照schedule的指定间隔进行后续备份。这些间隔有Cron表达式指定。
scheduled backups以名称-存储,的格式如下: YYYYMMDDhhmmss
restore operatios可以从以前创建的备份中还原所有对象和永久卷。同样,可以恢复对象和永久卷中的部分信息。velero支持多个名称空间的映射,在一次还原中,可以在名称空间"def"下重新创建名称空间"abc",也可以在名称空间"123"下创建名称空间"456"
还原的默认名称为, 的格式设置为YYYYMMDDhhmmss.custom name
可以自行制定.restored对象同样包括一个label
和一个key
格式为velero.io/restore-name
对应的value
是
同样可以在restore模式下运行velero服务器,该模式在restore期间禁用备份,计划和垃圾收集功能。
执行velero backup create test-backup:
velero客户端调用kubernetes api服务器创建backup
对象
backup controller监听到新的backup对象并进行验证
backupcontroller
开始备份过程。通过查询api server
用来获取资源来收集数据进行备份。
backupcontroller
调用对象存储服务(如, AWS S3)以上传备份文件。
默认情况下, velero backup create
可以创建任何持久卷的磁盘快照。可以通过运行velero backup create -help
查看可用标志,通过-snapshot-volumes = false
选项禁用快照。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6aOTW436-1586575420072)(…/png/关系调用结构.png)]
velero使用kubernetes api
服务器的首选版本为每个group/resource
备份资源。还原资源时,目标集群中必须存在相同的APIgroup/resource
,以便还原成功。
例如, 如果备份集群在API
things group中有gizmos
资源,并且具有group/versions
,things/v1alpha1
,things/v1
。并且服务器的首选group/version
是things/v1
,那么所有的gizmos
都将从things/v1
API端点进行备份, 目标集群必须具有things/v1
端点才能还原gizmos
.
这里的版本是什么概念,
group/resource
,things/v1
分别代表什么?
创建备份时,可以指定TTL
添加一个flag
,例如--ttl
, 如果velero存在bacup resource将要消失,它将移除:
backup resource
backup file from cloud object storage
all pv(persistentvolume snapshots)
all associated restores (关联资源)
velero将对象存储作为真实信息源,通过不断检查用来确保始终存在正确的备份资源。
此处的持续性检查是通过什么模块检测的?
如果storage bucket中有格式正确的备份文件, 但是在kubernetes API
中没有相应的备份资源, velero
就会将信息存储同步到kubernetes
中。
这样,还原功能就可以在新集群(不存在原始备份对象的集群)中,完成迁移。
备份文件是什么样子的?
这个是否是指,如果对象存储中包含格式正确的备份文件,则可以完成上一层k8s的迁移。具体怎么操作?
第2节中,出现数据不一致的情况,相关实验及后续备份方案。
问题1: 如何验证数据不一致
问题2: 如何解决数据不一致
暂且考虑到,
方案一、第二次间隔时间段将会补货到相关信息。
方案二、发起备份请求后不再进行其他操作。
velero的架构模式是什么样的?
第2节中的存储调用接口,如何进行调用?
第6节中是否需要两个完全相同的kubernetes
集群?
这里的版本是什么概念, group/resource
, things/v1
分别代表什么?
第7节中4个资源更为具体的是什么?运行示例是什么?移除是自动执行?还是函数调用执行?
第8节中的持续性检查,是通过什么模块检查的?
这个是否是指,如果对象存储中包含格式正确的备份文件,则可以完成上一层k8s的迁移。具体怎么操作?