how velero works

1 How Velero Works

基于Kubernetes,Velero 的相关操作包括: demand backup, scheduled backup, restore。 可以back up或者restore集群中的所有对象,也可以按照type, namespace, label相关标签选择back up或者restore。

2 On-demand-backups

backup operation:

  1. 拷贝kubernetes objects的压缩文件上传到cloud object storage(云对象存储)中.

  2. 调用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对象,则这些操作可能不包含在备份中。尽管出现不一致信息的几率较小,但是仍旧存在风险。

这里需要试验操作一下,检测是否有不一致信息的出现。

3 Scheduled backups

通过计划操作可以定期重复备份数据,第一次创建schedule时将执行第一次备份, 然后按照schedule的指定间隔进行后续备份。这些间隔有Cron表达式指定。

scheduled backups以名称-存储,的格式如下: YYYYMMDDhhmmss

4 Restores

restore operatios可以从以前创建的备份中还原所有对象和永久卷。同样,可以恢复对象和永久卷中的部分信息。velero支持多个名称空间的映射,在一次还原中,可以在名称空间"def"下重新创建名称空间"abc",也可以在名称空间"123"下创建名称空间"456"

还原的默认名称为, 的格式设置为YYYYMMDDhhmmss.custom name可以自行制定.restored对象同样包括一个label和一个key格式为velero.io/restore-name对应的value

同样可以在restore模式下运行velero服务器,该模式在restore期间禁用备份,计划和垃圾收集功能。

5 Backup workflow

执行velero backup create test-backup:

  1. velero客户端调用kubernetes api服务器创建backup对象

  2. backup controller监听到新的backup对象并进行验证

  3. backupcontroller开始备份过程。通过查询api server用来获取资源来收集数据进行备份。

  4. backupcontroller调用对象存储服务(如, AWS S3)以上传备份文件。

默认情况下, velero backup create可以创建任何持久卷的磁盘快照。可以通过运行velero backup create -help查看可用标志,通过-snapshot-volumes = false选项禁用快照。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6aOTW436-1586575420072)(…/png/关系调用结构.png)]

6 Backed-up API versions

velero使用kubernetes api服务器的首选版本为每个group/resource备份资源。还原资源时,目标集群中必须存在相同的APIgroup/resource,以便还原成功。

例如, 如果备份集群在APIthings group中有gizmos资源,并且具有group/versions,things/v1alpha1,things/v1。并且服务器的首选group/versionthings/v1,那么所有的gizmos都将从things/v1API端点进行备份, 目标集群必须具有things/v1端点才能还原gizmos.

这里的版本是什么概念, group/resource, things/v1分别代表什么?

7. Set a backup to expire(设置备份过期)

创建备份时,可以指定TTL添加一个flag,例如--ttl , 如果velero存在bacup resource将要消失,它将移除:

  1. backup resource

  2. backup file from cloud object storage

  3. all pv(persistentvolume snapshots)

  4. all associated restores (关联资源)

8. Object storeage sync(对象存储同步)

velero将对象存储作为真实信息源,通过不断检查用来确保始终存在正确的备份资源。

此处的持续性检查是通过什么模块检测的?

如果storage bucket中有格式正确的备份文件, 但是在kubernetes API中没有相应的备份资源, velero就会将信息存储同步到kubernetes中。

这样,还原功能就可以在新集群(不存在原始备份对象的集群)中,完成迁移。

备份文件是什么样子的?

这个是否是指,如果对象存储中包含格式正确的备份文件,则可以完成上一层k8s的迁移。具体怎么操作?

后续待解决的任务

  1. 第2节中,出现数据不一致的情况,相关实验及后续备份方案。
    问题1: 如何验证数据不一致

    问题2: 如何解决数据不一致
    暂且考虑到,
    方案一、第二次间隔时间段将会补货到相关信息。
    方案二、发起备份请求后不再进行其他操作。

  2. velero的架构模式是什么样的?

  3. 第2节中的存储调用接口,如何进行调用?

  4. 第6节中是否需要两个完全相同的kubernetes集群?

  5. 这里的版本是什么概念, group/resource, things/v1分别代表什么?

  6. 第7节中4个资源更为具体的是什么?运行示例是什么?移除是自动执行?还是函数调用执行?

  7. 第8节中的持续性检查,是通过什么模块检查的?

  8. 这个是否是指,如果对象存储中包含格式正确的备份文件,则可以完成上一层k8s的迁移。具体怎么操作?

你可能感兴趣的:(velero)