加入收藏 | 设为首页 | 会员中心 | 我要投稿 邯郸站长网 (https://www.0310zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

运用 Velero 备份还原 Kubernetes 集群

发布时间:2021-12-07 13:34:51 所属栏目:云计算 来源:互联网
导读:Velero(https://velero.io)(可以提供备份和还原 Kubernetes 集群资源和持久卷的能力,你可以在公有云或本地搭建的私有云环境安装 Velero,可以为你提供以下能力: 备份集群数据,并在集群故障的情况下进行还原 将集群资源迁移到其他集群 将生产集群复制到开发
Velero(https://velero.io)(可以提供备份和还原 Kubernetes 集群资源和持久卷的能力,你可以在公有云或本地搭建的私有云环境安装 Velero,可以为你提供以下能力:
 
备份集群数据,并在集群故障的情况下进行还原
将集群资源迁移到其他集群
将生产集群复制到开发和测试集群
Velero 包含一个在集群上运行的服务器端和在本地运行的命令行客户端。
 
原理
每个 Velero 的操作(比如按需备份、计划备份、还原)都是 CRD 自定义资源,Velero 可以备份或还原集群中的所有对象,也可以按类型、namespace 或标签过滤对象。Velero 是 Kubernetes 用来灾难恢复的理想选择,也可以在集群上执行系统操作(比如升级)之前对应用程序状态进行快照的理想选择。
 
按需备份
按需备份操作可以将复制的 Kubernetes 对象的压缩文件上传到云对象存储中,也可以调用云环境提供的 API 来创建持久化卷的磁盘快照。我们可以选择指定在备份期间执行的备份 hook,比如你可能需要在拍摄快照之前告诉数据库将其内存中的缓冲区刷新到磁盘。
 
需要注意的是集群备份并不是严格的原子备份,如果在备份时创建或编辑 Kubernetes 对象,则它们可能不会被包含在备份中,是可能出现这种状况的。
 
定时备份
通过定时操作,我们可以定期备份数据,第一次创建日程表时将执行第一次备份,随后的备份将按日程表指定的间隔进行备份,这些间隔由 Cron 表达式指定。
 
定时备份保存的名称为 <SCHEDULE NAME>-<TIMESTAMP>,其中 <TIMESTAMP> 格式为 YYYYMMDDhhmmss。
 
备份还原
通过还原操作,我们可以从以前创建的备份中还原所有对象和持久卷,此外我们还可以仅还原对象和持久卷的子集,Velero 支持多个命名空间重新映射。例如在一次还原操作中,可以在命名空间 def 下重新创建命名空间 abc 中的对象,或在 456 之下重新创建名称空间 123 中的对象。
 
还原的默认名称为<BACKUP NAME>-<TIMESTAMP>,<TIMESTAMP> 格式为 YYYYMMDDhhmmss,还可以指定自定义名称,恢复的对象还包括带有键 velero.io/restore-name 和值的标签 <RESTORE NAME>。
 
默认情况下,备份存储位置以读写模式创建,但是,在还原期间,可以将备份存储位置配置为只读模式,这将禁用该存储位置的备份创建和删除,这对于确保在还原方案期间不会无意间创建或删除任何备份非常有用。此外我们还可以选择指定在还原期间或还原资源后执行的还原 hook,例如可能需要在数据库应用程序容器启动之前执行自定义数据库还原操作。
 
备份流程
执行命令 velero backup create test-backup 的时候,会执行下面的操作:
 
Velero 客户端调用 Kubernetes APIServer 创建 Backup 这个 CRD 对象
Backup 控制器 watch 到新的 Backup 对象被创建并执行验证
Backup 控制器开始执行备份,通过查询 APIServer 来获取资源收集数据进行备份
Backup 控制器调用对象存储服务,比如 S3 上传备份文件
默认情况下 velero backup create 支持任何持久卷的磁盘快照,可以通过指定其他参数来调整快照,可以使用 --snapshot-volumes=false 选项禁用快照。
 
 
 
设置备份过期时间
创建备份时,可以通过添加标志 --ttl 来指定 TTL,如果未指定,则将默认的 TTL 值为30天,如果 Velero 检测到有备份资源已过期,它将删除以下相应备份数据:
 
备份资源
来自云对象存储的备份文件
所有 PersistentVolume 快照
所有关联的还原
同步对象存储
Velero 将对象存储视为资源的来源,它不断检查以确保始终存在正确的备份资源,如果存储桶中有格式正确的备份文件,但 Kubernetes APIServer 中没有相应的备份资源,则 Velero 会将信息从对象存储同步到 Kubernetes,这使还原功能可以在集群迁移方案中工作,在该方案中,新集群中不存在原始的备份对象。同样,如果备份对象存在于 Kubernetes 中,但不存在于对象存储中,则由于备份压缩包不再存在,它将从 Kubernetes 中删除。

(编辑:邯郸站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读