velero+minio k8s备份
来源:原创
时间:2022-11-09
作者:脚本小站
分类:云原生
安装minio:
docker run -p 9000:9000 -p 9090:9090 \ --net=host \ --name minio \ -d --restart=always \ -e "MINIO_ACCESS_KEY=admin" \ -e "MINIO_SECRET_KEY=minio123" \ -v /home/minio/data:/data \ -v /home/minio/config:/root/.minio \ minio/minio server \
进入web页面创建名为velerodata的bucket。
安装velero命令行工具:
wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz tar -xvzf velero-v1.8.1-linux-amd64.tar.gz mv velero /usr/local/bin
安装velero到k8s:
创建密码文件:
cat >> velero-auth.txt <<EOF [default] aws_access_key_id = admin aws_secret_access_key = minio123 EOF
名称空间:
kubectl create ns velero-system
安装:
velero --kubeconfig /root/.kube/config install --provider aws \ --plugins velero/velero-plugin-for-aws:v1.3.1 \ --bucket velerodata \ --secret-file ./velero-auth.txt \ --use-volume-snapshots=false \ --namespace velero-system \ --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://192.168.199.183:9000
--namespace 指定安装到的名称空间
--bucket 指定minio的bucket
--backup-location-config 指定minio的配置信息
--use-volume-snapshots 关闭存储券数据备份
备份数据:
--namespace -n 指定velero安装的名称空间
velero backup create all-backup --kubeconfig=/root/.kube/config --namespace velero-system velero backup create all-backup -n velero-system
定时备份:备份default名称空间下的资源
velero backup create default-backup-`date +%Y%m%d%H%M%S` --include-cluster-resources=true --include-namespaces default -n velero-system
查看备份:备份的数据默认保留一个月,注意 EXPIRES 字段列。
]# velero backup get --kubeconfig=/root/.kube/config --namespace velero-system NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR default-backup-20221109154508 Completed 0 0 2022-11-09 15:45:16 +0800 CST 29d default <none> default-backup-20221109154154 Completed 0 0 2022-11-09 15:42:12 +0800 CST 29d default <none>
恢复数据:
velero restore create --from-backup default-backup-20220802090722 --wait -n velero-system velero restore create --from-backup default-backup-20220802090722 --wait --kubeconfig=/root/.kube/config --namespace velero-system
备份特定名称空间:
velero backup create <backupname> --include-namespaces ns1,ns2
除了特定名称空间:其余名称空间都备份
velero backup create <backupname> --exclude-namespaces ns1,ns2
备份特定资源:可备份pod、deployment等资源
velero backup create pod-pvc-pv-backup --include-cluster-resources=true \ --ordered-resources 'pods=myserver/net-test1,default/nginx;persistentvolumeclaims=ns/name; persistentvolumes=ns/name' \ --namespace velero-system --include-namespaces=defafut
指定备份保留时间:
velero backup create default-backup-${DATE} --include-cluster-resources=true --include-namespaces default --kubeconfig=/root/.kube/config --namespace velero-system --ttl=1440h
备份脚本:
#!/bin/bash NS_NAME=$(kubectl get ns |awk '{if(NR>1){print $1}}') DATE=$(date +%Y%m%d%H%M%S) cd /data/velero/ for i in $NS_NAME;do velero backup create ${i}-ns-backup-${DATE} \ --include-cluster-resources=true \ --include-namespaces ${i} \ --kubeconfig=/root/.kube/config \ --namespace velero-system done
参考:
cnblogs.com/punchlinux/p/16543420.html