1.下载并安装velero客户端
下载地址:https://github.com/vmware-tanzu/velero/releases #根据项目对应的k8s版本下载对应的版本,我的k8s版本为1.22 所以下载1.11.0 wget https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz tar xf velero-v1.11.0-linux-amd64.tar.gz cd velero-v1.11.0-linux-amd64/ mv velero /usr/local/bin/ velero -h
2.安装velero服务端(使用阿里云OSS)
mkdir ~/velero cd ~/velero cat >auth-oss.txt <<EOF #具有写入读取阿里云OSS权限用户的AK及AS [default] aws_access_key_id = LTAI4FoDtp4y7ENqv9X4emSE aws_secret_access_key = lVNCxCVGciaJqUa5axxx EOF velero -n velero install \ --image velero/velero:v1.11.0 \ #注意版本要和客户端保持一致 --plugins velero/velero-plugin-for-aws:v1.9.2 \ --provider aws \ --use-volume-snapshots=false \ --bucket zdbl-ops \ #OSS名称 --prefix k8s_backup \ #OSS下的目录,如果整个OSS全部给velero可以不写 --secret-file ~/velero/auth-oss.txt \ --backup-location-config region=oss-cn-shanghai,s3ForcePathStyle="false",s3Url=http://oss-cn-shanghai.aliyuncs.com #根据实际地域替换shanghai #查看日志及状态 kubectl logs -f deployment/velero -n velero kubectl get pods -n velero
3.验证
#部署nginx-demo kubectl create ns velero-backup-test kubectl apply -f https://gitee.com/alivv/elvin-demo/raw/master/k8s/2.1.nginx-demo.yml sed -i 's/default/velero-backup-test/g' 2.1.nginx-demo.yml kubectl apply -f 2.1.nginx-demo.yml kubectl get pod -n velero-backup-test #备份namespaces为velero-backup-test 的所有资源 velero backup create k8s-backup-test --include-namespaces velero-backup-test #查看备份 velero backup logs k8s-backup-test velero backup get #删除nginx-demo kubectl delete -f 2.1.nginx-demo.yml kubectl get pod -n velero-backup-test #使用velero恢复nginx-demo elero restore create nginx-demo --from-backup k8s-backup-test --include-namespaces velero-backup-test velero restore get kubectl get pods -n velero-backup-test
4.其他常用命令
#velero基本命令 velero get backup #查看备份 velero get schedule #查看定时备份 velero get restore #查看已有的恢复 velero get plugins #查看插件 #备份所有 velero backup create k8s-bakcup-all --ttl 72h #恢复集群所有备份,对已经存在的服务不会覆盖 velero restore create --from-backup k8s-bakcup-all #仅恢复default的namespace,包括集群资源 velero restore create --from-backup k8s-bakcup-all --include-namespaces default --include-cluster-resources=true #恢复储存pv,pvc velero restore create pvc --from-backup k8s-bakcup-all --include-resources persistentvolumeclaims,persistentvolumes #恢复指定资源deployments,configmaps velero restore create deploy-test --from-backup k8s-bakcup-all --include-resources deployments,configmaps #筛选备份name=nginx-demo -l, --selector:通过指定label来匹配要backup的资源 velero backup create nginx-demo --from-backup k8s-bakcup-all --selector name=nginx-demo #筛选备份恢复对象 --include-namespaces 筛选命名空间所有资源,不包括集群资源 --include-resources 筛选的资源类型 --exclude-resources 排除的资源类型 --include-cluster-resources=true 包括集群资源 #将test1命名空间资源恢复到test2 velero restore create test1-test2 --from-backup k8s-bakcup-all --namespace-mappings test1:test2 #备份hooks #Velero支持在备份任务执行之前和执行后在容器中执行一些预先设定好的命令 #卸载velero后重新安装以验证备份正常 velero uninstall #备份所有资源保留72小时 velero backup create k8s-bakcup-all-$(date +%F) --ttl 72h #查看备份 velero backup get #周期性任务 velero schedule create -h #定时任务,每天16点(UTC时区)备份,保留7天(168h) velero create schedule k8s-bakcup-all --schedule="0 16 * * *" --ttl 168h #查看定时任务 velero get schedule #迁移 新集群参考当前集群安装velero的客户端和服务端,OSS配置保持一致
抄自于:https://www.cnblogs.com/elvi/p/18303978