Velero备份恢复
Velerok8s集群的数据备份方式有两种,第一种是备份etcd数据库,这种备份方式比较简单,但是恢复数据时只能全部恢复。试想一下,需求是恢复误删除的一个namespace,恢复时却要将整个etcd数据库重新导入覆盖,etcd作为k8s的核心数据库,这是个非常危险的操作。第二种就是velero备份,velero的备份恢复策略颗粒度更细,除了对 Kubernetes 集群进行整体备份外,Velero
Velero
k8s集群的数据备份方式有两种,第一种是备份etcd数据库,这种备份方式比较简单,但是恢复数据时只能全部恢复。试想一下,需求是恢复误删除的一个namespace,恢复时却要将整个etcd数据库重新导入覆盖,etcd作为k8s的核心数据库,这是个非常危险的操作。第二种就是velero备份,velero的备份恢复策略颗粒度更细,除了对 Kubernetes 集群进行整体备份外,Velero 还可以通过对 Type、Namespace、Label 等对象进行分类备份或者恢复,可控性很强。
velero简介
k8s备份工具之velero, velero 是一个云原生的灾难恢复和迁移工具,它本身也是开源的, 采用 Go 语言编写,可以安全的备份、恢复和迁移Kubernetes集群资源和持久卷。
Velero 特性
-
支持 Kubernetes 集群数据备份和恢复
-
支持复制当前 Kubernetes 集群的资源到其它 Kubernetes 集群
-
支持复制生产环境到开发以及测试环境(不同命名空间的备份还原)
velero部署
velero部署分为3个部分,部署客户端,服务端及一个对象存储,这里用minio代替,生产环境可以保存到硬件存储或ceph集群中
minio部署
利用docker简单快捷部署minio存储
minio最新镜像hub地址:https://hub.docker.com/r/minio/minio
启动minio容器
#拉取minio镜像
docker pull minio/minio:RELEASE.2022-04-12T06-55-35Z
#启动命令
docker run -itd \
-p 9000:9000 \
-p 9001:9001 \
-d --restart=always \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=12345678" \
-v /data/minio/data:/data \
minio/minio:RELEASE.2022-04-12T06-55-35Z server /data \
--console-address ":9001"
# MINIO_ROOT_USER MINIO_ROOT_PASSWORD参数为账户密码,默认为minioadmi/minioadmi
#端口9000,9001分别是api端口(程序连接),web管理页面端口
创建存储buckets
#web管理页面:http://172.26.156.214:9001/login
创建buckets,名称为velerdata,后面备份会用到这个名字
velero客户端部署
velero github下载地址:https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
root@master01:~# cd /data/work/
root@master01:/data/work# wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
root@master01:/data/work# tar xf velero-v1.8.1-linux-amd64.tar.gz
root@master01:/data/work# cp velero-v1.8.1-linux-amd64/velero /usr/local/bin/
客户端安装完成
velero服务端部署
velero服务端安装一条命令即可
先创建连接对象存储的密码文件
root@master01:/data/work/velero-v1.8.1-linux-amd64# vi credentials-velero
[default]
aws_access_key_id = admin
aws_secret_access_key = 12345678
执行安装命令
velero install \
--provider aws \
--kubeconfig ~/.kube/config \
--bucket velerodata \
--secret-file ./credentials-velero \
--use-volume-snapshots=false \
--plugins velero/velero-plugin-for-aws:v1.3.1 \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://172.26.156.214:9000
# --kubeconfig 默认找KUBECONFIG环境变量制定的认证文件
# --bucket minio创建存储名
# --secret-file 密码认证文件
# --namespace 默认是velero命名空间,指定该参数指定创建命名空间
查看velero服务端正常运行起来
卸载velero
kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero
velero备份恢复
备份单个test命名空间并恢复
#备份test命名空间
velero backup create test-bakcup-20220420 --include-namespaces test
#查看备份
velero get backups
#查看备份详情
velero backup describe test-bakcup-20220420
#恢复test命名空间
kubectl delete ns test
velero restore create --from-backup test-bakcup-20220420
备份全部命名空间并恢复
velero backup create k8s-all-ns
kubectl delete ns deploy
velero restore create --from-backup k8s-all-ns
待完善
通过velero备份恢复PV存储资源
更多推荐
所有评论(0)