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存储资源

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐