使用Velero对k8s进行备份与恢复(带持久化卷)
1.什么是VeleroVelero 是一个云原生的灾难恢复和迁移工具,它本身也是开源的, 采用 Go 语言编写,可以安全的备份、恢复和迁移Kubernetes集群资源和持久卷。Velero 是西班牙语,意思是帆船,非常符合 Kubernetes 社区的命名风格。Velero 的开发公司 Heptio,之前已被 VMware 收购,其创始人2014就职于Google,当时被认为是 Kubernete
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。下面演示minio作为对象存储使用velero将k8s集群备份、迁移。
2.下载velero
1.在可以访问到需要备份的k8s集群的机器上下载并解压velero,并将velero命令添加到linux
wget https://github.com/vmware-tanzu/velero/releases/download/v1.5.4/velero-v1.5.4-linux-amd64.tar.gz
tar -zxvf velero-v1.5.4-linux-amd64.tar.gz
cp velero-v1.5.4-linux-amd64/velero /usr/local/bin
2.创建好minio需要使用的认证,这里以velero自带的测试minio部署文件为例
cd velero-v1.5.4-linux-amd64
kubectl apply -f examples/minio/00-minio-deployment.yaml
vi credentials-velero
[default]
aws_access_key_id = minio
aws_secret_access_key = minio123
3.在需要备份的k8s集群上安装velero服务端
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.0.0 \
--bucket velero \
--secret-file ./credentials-velero \
--use-restic \
--use-volume-snapshots=false \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000
4.创建任意带持久化存储卷的服务进行备份测试(可自行使用helm创建)这里以备份backup-test命名空间下所有资源为例
velero backup create test-volum --include-namespaces=backup-test --default-volumes-to-restic
5.查看备份状态
velero backup get|grep test-volum
结果如下表示已备份完成
更详细内容可使用describe命令
velero backup describe test-volum --details
6.删除命名空间,并使用备份恢复
kubectl delete ns backup-test
velero restore create --from-backup test-volum
7.若要每天凌晨定时进行备份、设置过期时间为72小时并使用其他的BackupStorageLocation
velero schedule create all-daily-restic --schedule="@midnight" --exclude-namespaces kube-system,back-test,velero --default-volumes-to-restic --ttl=72h --storage-location fizz-minio-backup
8.velero添加其他的backuplocation可以使用如下yaml进行创建
apiVersion: velero.io/v1
kind: BackupStorageLocation
metadata:
name: fizz-minio-backup
namespace: velero
spec:
backupSyncPeriod: 2m0s
provider: aws
objectStorage:
bucket: velero
config:
region: minio
s3ForcePathStyle: "true"
s3Url: http://xxx.test.com:33000
9.若要迁移到其他集群,需要相同方式在迁移集群部署velero,指定相同的backuplocation执行恢复命令即可
更多推荐
所有评论(0)