0x00 前言简述
引言
在运维安全管理中容灾备份是非常重要的一环, 那在Kubernetes集群中如何进行备份和迁移 Kubernetes 资源和持久卷数据。 常常采用手动进行容灾备份, 如备份资源清单、或者helm模板,但是针对Kubernetes 资源和持久卷(
PV/PVC
)中得数据无法进行备份迁移,所以在这样得场景下我们就需要 Velero 是一个开源工具。
1.Velero 基础概述
What: 什么是 Velero?
答: Velero (以前称为
Heptio Ark
)是一个开源工具,用于安全备份和恢复、执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷。
Why: 为啥要使用 Velero?
答: Velero 可以让您
备份您的集群并在丢失时恢复
、将集群资源迁移到其他集群
、将您的生产集群复制到开发和测试集群
, 详细解析说明:
- 1.灾难恢复 : 在基础设施丢失、数据损坏和/或服务中断的情况下减少恢复时间。
- 2.数据迁移 : 通过轻松地将 Kubernetes 资源从一个集群迁移到另一个集群,实现集群可移植性。
- 3.数据保护 : 提供关键数据保护功能,例如计划备份、保留计划以及用于自定义操作的备份前或备份后挂钩。
Velero 特点: 您可以备份或恢复集群中的所有对象,也可以按类型、命名空间和/或标签过滤对象。
- 1.备份集群 : 使用命名空间或标签选择器为整个集群或集群的一部分备份 Kubernetes 资源和卷。
- 2.计划备份 : 设置计划以定期自动启动备份。
- 3.备份挂钩 : 配置备份前和备份后挂钩,以在 Velero 备份之前和之后执行自定义操作。
How: 你如何使用 Velero?
答: 您可以通过云提供商或本地运行 Velero, 其组件包括
在集群上运行的服务器
和本地运行的命令行客户端
。 使用Minio
服务进行管理存储备份在ETCD的数据、使用velero
客户端进行备份和还原操作。
2.Velero 工作原理
描述: 一般得使用Velero主要是从以下三个方面入手。
- 1.按需备份: 将复制的 Kubernetes 对象的 tarball 上传到云对象存储中,调用云提供商 API 以制作持久卷的磁盘快照(如果指定)。
- 2.计划备份: 由 Cron 表达式指定在循环间隔备份您的数据,计划备份以名称保存
<SCHEDULE NAME>-<TIMESTAMP>
,其中<TIMESTAMP>
格式为YYYYMMDDhhmmss
。 - 3.容灾恢复: 该恢复操作可以恢复所有对象和持久卷从先前创建的备份,还原的默认名称为
<BACKUP NAME>-<TIMESTAMP>
, 恢复的对象还包括一个带有 keyvelero.io/restore-name
和 value的标签<RESTORE NAME>
- 4.备份过期: 可以通过添加标志来指定
--ttl <DURATION>
参数来设置备份得生存时间(默认30天)。到期后则会删除备份资源、来自云对象存储的备份文件、所有 PersistentVolume 快照、所有关联的恢复
。 - 5.对象存储同步: 它会不断检查以确保始终存在正确的备份资源。如果存储桶中有格式正确的备份文件,但 Kubernetes API 中没有相应的备份资源,Velero 会将信息从对象存储同步到 Kubernetes。
备份工作流程:
描述: 当你运行velero backup create test-backup
命令。
1.Velero 客户端调用 Kubernetes API 服务器来创建一个Backup对象。
2.该 BackupController 注意到新的 Backup 对象并进行验证。
3.在 BackupController 开始备份过程。它通过向 API 服务器查询资源来收集要备份的数据。
4.将 BackupController 使得对象存储服务的调用-例如,AWS S3 -上传备份文件。
默认情况下 velero backup create
为任何持久卷制作磁盘快照, 可以通过指定附加标志来调整快照--snapshot-volumes=false
(使用选项禁用快照)。
WeiyiGeek.backup-process
Tips : 实际上 Velero
在 Kubernetes
集群中创建了很多 CRD 以及相关的控制器,进行备份恢复等操作实质上是对相关 CRD 的操作。
Tips : Velero 使用 Kubernetes API 服务器的首选版本为每个组/资源备份资源。恢复资源时,目标集群中必须存在相同的 API 组/版本
才能成功恢复。
3.Provider 插件供应商
描述: Velero 有一个插件系统支持各种存储提供程序,用于不同的备份和快照操作。它允许任何人在不修改 Velero 代码库的情况下为其他备份和卷存储平台添加兼容性。
Velero 支持的备份存储Provider
提供者 | 对象存储 | 卷快照程序 | 插件提供程序存储库 | 安装说明 |
---|---|---|---|---|
亚马逊网络服务 (AWS) | AWS S3 | AWS EBS | 适用于 AWS 的 Velero 插件 | AWS 插件设置 (以及s3兼容的存储比如minio) |
谷歌云平台 (GCP) | 谷歌云存储 | 谷歌计算引擎磁盘 | GCP 的 Velero 插件 | GCP 插件设置 |
微软 Azure | Azure Blob 存储 | Azure 托管磁盘 | 适用于 Microsoft Azure 的 Velero 插件 | Azure 插件设置 |
VMware vSphere |
|