1. 什么是velero
Velero 是一个云原生的灾难恢复和迁移工具,它本身也是开源的, 采用 Go 语言编写,可以安全的备份、恢复和迁移Kubernetes集群资源和持久卷。
Velero 是西班牙语,意思是帆船,非常符合 Kubernetes 社区的命名风格。Velero 的开发公司 Heptio,之前已被 VMware 收购,其创始人2014就职于Google,当时被认为是 Kubernetes 核心成员。
Velero 是一种云原生的Kubernetes优化方法,支持标准的K8S集群,既可以是私有云平台也可以是公有云。除了灾备之外它还能做资源移转,支持把容器应用从一个集群迁移到另一个集群。
Heptio Velero ( 以前的名字为 ARK) 是一款用于 Kubernetes 集群资源和持久存储卷(PV)的备份、迁移以及灾难恢复等的开源工具。
使用velero可以对集群进行备份和恢复,降低集群DR造成的影响。velero的基本原理就是将集群的数据备份到对象存储中,在恢复的时候将数据从对象存储中拉取下来。可以从官方文档查看可接收的对象存储,本地存储可以使用Minio
1.1 velero功能
- Velero是用于Kubernetes资源备份、恢复、迁移的开源工具(复制同步开发,测试,生产环境的集群配置,简化环境配置)
- 客户端(velero命令行) -> 服务端(部署在k8s) -> 对象储存(s3或兼容s3储存)
- velero将k8s资源备份为json文件,可以通过namespace、label等进行筛选备份或恢复
1.2 velero工作流程
1.3 velero备份过程
https://velero.io/docs/v1.9/how-velero-works/
- 本地
Velero
客户端发送备份指令。 Kubernetes
集群内就会创建一个Backup
对象。BackupController
监测Backup
对象并开始备份过程。BackupController
会向API Server
查询相关数据。BackupController
将查询到的数据备份到远端的对象存储。
1.4 velero组成
Velero
组件一共分两部分,分别是服务端和客户端。
- 服务端:运行在你
Kubernetes
的集群中 - 客户端:是一些运行在本地的命令行的工具,需要已配置好
kubectl
及集群kubeconfig
的机器上
1.5 velero支持备份
- AWS S3 以及兼容 S3 的存储,比如:Minio
- Azure BloB 存储
- Google Cloud 存储
- Aliyun OSS 存储(https://github.com/AliyunContainerService/velero-plugin)
1.6 和etcd区别
与 Etcd 备份相比,直接备份 Etcd
是将集群的全部资源备份起来。而 Velero
就是可以对 Kubernetes
集群内对象级别进行备份。除了对 Kubernetes
集群进行整体备份外,Velero
还可以通过对 Type
、Namespace
、Label
等对象进行分类备份或者恢复。
💡 说明
备份过程中创建的对象是不会被备份的