江门网站建设公司,汕头专业的开发网站方案,建众智业公司简介,python基础教程pdf下载流程图 velero备份原理
本地 Velero 客户端发送备份指令。Kubernetes 集群内就会创建一个 Backup 对象。BackupController 监测 Backup 对象并开始备份过程。BackupController 会向 API Server 查询相关数据。BackupController 将查询到的数据备份到远端的对象存储。
velero的…流程图 velero备份原理
本地 Velero 客户端发送备份指令。Kubernetes 集群内就会创建一个 Backup 对象。BackupController 监测 Backup 对象并开始备份过程。BackupController 会向 API Server 查询相关数据。BackupController 将查询到的数据备份到远端的对象存储。
velero的特点
支持kubernetes集群数据备份和恢复支持将备份好的数据恢复到其他kubernetes集群前提是前一个集群所用到的资源如存储以及kubernetes不能夸大版本否则会恢复不了
安装minio对象存储
1、下载minio镜像
docker pull minio/minio:latest2、准备minio挂载目录
mkdir -pv /velvero/data3、启动minio
docker run --name minio --restart always -v /velvero/data:/data -d -e MINIO_ROOT_USERadmin -e MINIO_ROOT_PASSWORD12345678 -p9000:9000 -p 9999:9999 minio/minio:latest server /data --console-address 0.0.0.0:9999MINIO_ROOT_USER 指定minio用户
MINIO_ROOT_PASSWORD 指定用户密码
--console-address 指定控制台监听地址和端口
4、创建buckets桶 部署velero
1、下载/配置velero二进制客户端工具
# wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
# tar xvf velero-v1.8.1-linux-amd64.tar.gz
# cp velero-v1.8.1-linux-amd64/velero /usr/local/bin/
# velero --help安装velero资源
1、创建velero-system名称空间
kubectl create ns velero-system2、创建velero组件
velero --kubeconfig /root/.kube/config \
install --provider aws --use-restic \
--plugins velero/velero-plugin-for-aws:v1.3.1 \
--bucket velerodata \
--secret-file ./velero-auth.txt \
--use-volume-snapshotsfalse \
--namespace velero-system \
default-volumes-to-restic \
--backup-location-config regionminio,s3ForcePathStyletrue,s3Urlhttp://10.211.55.3:9000关键参数解读
--kubeconfig 指定集群认证文件
--provider 声明velero使用的存储插件类型
--use-restic 使用开源免费的备份工具restic备份和还原持久卷数据
--secret-file 指定对象存储的账号密码
--use-volume-snapshotsfalse 关闭存储卷快照数据快照方式备份
--namespace 指定velero安装在那个名称空间
default-volumes-to-restic使用rustic 来备份所有pod卷前提是需要提前开启 --use-restic 参数
验证功能
# kubectl get pod -nvelero-system
NAME READY STATUS RESTARTS AGE
velero-858b9459f9-m6zm4 1/1 Running 0 46h查看velero日志 日志出现Backup storage location valid, marking as available表示velero运行正常
创建备份
# velero backup create myserver-ns-backup-${DATE} --include-namespaces default 【--kubeconfig/root/.velero/config】 --namespace velero-system
Backup request myserver-ns-backup-20220808025816 submitted successfully.
Run velero backup describe myserver-ns-backup-20220808025816 or velero backup logs myserver-ns-backup-20220808025816 for more details.--include-namespaces 指定需要备份的名称空间
--kubeconfig指定k8s认证文件 注意如果使用的是k8s默认的.kube目录下的认证文件可以不用该参数
--namespace指定velero contallor所在的名称空间
查看velero备份是否成功
1、查看日志2、get备份信息
# velero backup get -nvelero-system
NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR
myserver-ns-backup-20220808025954 Completed 0 0 2022-08-08 03:00:02 0000 UTC 29d default none
myserver-ns-backup-20220808025816 Completed 0 0 2022-08-08 02:58:19 0000 UTC 29d default none3、查看minio存储桶是否存在数据 验证备份带有pvc数据的pod
1、环境准备
1、创建pod、pvc资源
~/manifests# cat pod-pvc.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pvc
spec:containers:- image: nginxname: test-containervolumeMounts:- mountPath: /usr/share/nginx/html/name: test-volumevolumes:- name: test-volumepersistentVolumeClaim:claimName: myclaim~/manifests# cat pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: myclaim
spec:accessModes:- ReadWriteOncevolumeMode: Filesystemresources:requests:storage: 1GistorageClassName: nfs-client~/manifests# kubectl get pod
NAME READY STATUS RESTARTS AGE
test-pvc 1/1 Running 0 31s
rootk8s-eploy:~/manifests# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
myclaim Bound pvc-f5e4f5d4-c829-49b9-89fa-568587796e46 1Gi RWO nfs-client 40s2、增添数据
:/data/nfs/default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e46# ls
rootk8s-eploy:/data/nfs/default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e46# echo test pv index.html
rootk8s-eploy:/data/nfs/default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e46# ls
index.html
rootk8s-eploy:/data/nfs/default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e46# cat index.html
test pv2、备份数据
1、执行备份命令
velero backup create \
default-ns-backup-date %Y%m%d%H%M%S \
--default-volumes-to-restic \
--snapshot-volumes \
--include-namespaces default \
-nvelero-systemBackup request default-ns-backup-20220808131011 submitted successfully.
Run velero backup describe default-ns-backup-20220808131011 or velero backup logs default-ns-backup-20220808131011 for more details.2、查看备份信息
~# velero backup get -nvelero-system
NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR
default-ns-backup-20220808131011 Completed 0 0 2022-08-08 13:10:11 0000 UTC 29d default none3、模拟意外删除资源及pvc数据
1、删除pod、pvc及数据
rootk8s-eploy:~/manifests# ls
pod-pvc.yaml pvc.yaml~/manifests# kubectl delete -f ./
pod test-pvc deleted
persistentvolumeclaim myclaim deleted/data/nfs# rm -rf archived-default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e462、还原备份
:/data/nfs# velero restore create \
--from-backup default-ns-backup-20220808131011 \
-nvelero-systemRestore request default-ns-backup-20220808131011-20220808132317 submitted successfully.
Run velero restore describe default-ns-backup-20220808131011-20220808132317 or velero restore logs default-ns-backup-20220808131011-20220808132317 for more details.3、查看pod数据是否恢复
:/data/nfs# kubectl get pod
NAME READY STATUS RESTARTS AGE
test-pvc 1/1 Running 0 49s:/data/nfs# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
myclaim Bound pvc-9bb398e3-0883-402e-a1c7-d345d2cb2750 1Gi RWO nfs-client 106s4、查看pvc数据是否恢复
:/data/nfs/default-myclaim-pvc-9bb398e3-0883-402e-a1c7-d345d2cb2750# ls
index.html定时备份
Usage:velero schedule create NAME --schedule [flags]Examples:# 每六小时备份一次.所有namespacevelero create schedule NAME --schedule*/1 * * * *# 每六小时备份一次.所有namespacevelero create schedule NAME --scheduleevery 6h# 每24小时备份一次 web namespace的数据velero create schedule NAME --scheduleevery 24h --include-namespaces web# 7天备份一次所有名称空间数据备份保存90天velero create schedule NAME --scheduleevery 168h --ttl 2160h0m0scat deploy.shcat velero-auth.txt EOF
[default]
aws_access_key_idadmin
aws_secret_access_keyadmin123
EOFvelero --kubeconfig ./config \install --provider aws --use-restic \--plugins velero/velero-plugin-for-aws:v1.3.1 \--bucket velero \--secret-file ./velero-auth.txt \--use-volume-snapshotsfalse \--namespace velero-system \default-volumes-to-restic \--backup-location-config regionminio,s3ForcePathStyletrue,s3Urlhttp://103.63.139.191:9000
编写好的makefile
.DELETE_ON_ERROR:
TIMESTAMP : $(shell date %s)
KUBECONFIG./config
NAMESPACE ? velero-systemshow:velero backup get -n $(NAMESPACE) --kubeconfig$(KUBECONFIG)
deploy:./deploy.sh
un:velero uninstall -n $(NAMESPACE) --kubeconfig$(KUBECONFIG)
del:for i in $$(velero backup get -n $(NAMESPACE) --kubeconfig$(KUBECONFIG) | awk {print $$1}); do \velero backup delete $$i -n $(NAMESPACE) --kubeconfig$(KUBECONFIG); \donebackup-restic:echo 备份带pvc数据的 $(NAMESPACE)velero backup create $(NAMESPACE)-backup-$(TIMESTAMP) --default-volumes-to-restic --snapshot-volumes --include-namespaces $(NAMESPACE) --kubeconfig./config --namespace velero-system
backup:echo 备份不带pvc的$(NAMESPACE)velero backup create $(NAMESPACE)-backup-$(NAMESPACE) --include-namespaces $(NAMESPACE) --kubeconfig$(KUBECONFIG) --namespace velero-systemrestore:echo 恢复 $(NAMESPACE)velero restore create --from-backup $(NAMESPACE)-backup-$(TIMESTAMP) -n velero-system ----kubeconfig$(KUBECONFIG)