官方文档:https://velero.io/docs/v1.5/index.html

功能:
备份群集并在丢失的情况下进行还原。
将群集资源迁移到其他群集。
将生产集群复制到开发和测试集群。

环境信息:
k8s v1.16.15
minio:192.168.86.6:9000
备份bucket:k8s-backup

一、安装和卸载
1、安装velero客户端

wget https://github.com/vmware-tanzu/velero/releases/download/v1.5.3/velero-v1.5.3-linux-amd64.tar.gz
tar -xf velero-v1.5.3-linux-amd64.tar.gz
cp velero-v1.5.3-linux-amd64/velero /usr/local/bin/

2、基于minio备份
1>准备minio认证文件

cat > credentials-velero <<eof
[default]
aws_access_key_id = admin
aws_secret_access_key = admin123456
eof

3、安装velero服务端

velero install \
   --provider aws \
   --bucket k8s-backup \
   --secret-file ./credentials-velero \
   --use-volume-snapshots=false \
   --plugins velero/velero-plugin-for-aws:v1.0.0 \
   --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://192.168.86.6:9000

4、卸载velero

kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero

二、备份和恢复
1、备份deploy这个namespace后删除namespace

velero backup create test-backup --include-namespaces deploy
velero get backups
velero backup describe test-backup
kubectl delete ns deploy

2、恢复deploy这个namespace

velero restore create --from-backup test-backup

3、备份整个集群所有namespace、并恢复

velero backup create k8s-all-ns
kubectl delete ns deploy
velero restore create --from-backup k8s-all-ns

4、带pv的pod备份、恢复
在这里插入图片描述
场景1、只备份服务不备份pv的数据

在这里插入代码片

5、集群迁移

1>新集群内安装velero,配置需要和原集群内安装的velero保持一致
2>在新集群内查看获取到的备份信息:velero get backups
3>在新集群内执行恢复命令:velero restore create --from-backup k8s-all-ns

6、基于阿里云oss备份
7、定时备份策略(针对不同namespace备份和对整个集群备份,可以配合crontab使用)

#!/bin/bash
source ~/.bashrc
DATE=`date '+%Y%m%d-%H%M%S'`
for i in `kubectl get ns | awk '{print $1}'| grep -E -v 'NAME|velero'`
do
        file_name="$DATE-$i"
        velero create backup "k8s-$file_name" --include-namespaces $i
done
velero create backup k8s-$DATE-backup
Logo

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

更多推荐