安装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