更多velero相关技术讨论,敬请关注velero中文社区官方网站:
https://velero.cn/
本文将介绍两个基于velero的restic备份和snapshot备份的实验,以及实验的log搜集,在velero备份了哪些资源(下)中将详细介绍基于实验数据的分析。
内容索引
引言
实验环境
实验一:用restic方式备份
实验二:用快照方式备份
参考
引言
经常用velero的用户可能会有这样的疑问,velero到底备份了哪些资源呢?本篇就对这个问题进行一个简单的实验与探讨。
实验环境
Kubernetes版本:v1.19.5
velero版本:
Client:
Version: v1.5.3
Git commit: 123109a3bcac11dbb6783d2758207bac0d0817cb
Server:
Version: v1.5.3
minio版本:minio/minio:RELEASE.2021-02-14T04-01-33Z
Rook-ceph版本:rook/ceph:v1.4.9
External-snapshotter: release-2.0
Snapshot CRD: v1beta1
待备份的应用是MySQL + Wordpress组合,PVC使用Ceph的RBD。
本篇实验仅以namesapce备份作为案例,用来展示并分析velero备份的资源,给读者一个参考。
实验一:用restic方式备份
创建备份
[root]# velero backup create wp-backup1 --include-namespaces=wordpress --default-volumes-to-restic --volume-snapshot-locations default这里备份命令只设置了namespace,并没有对资源进行任何选择。另外,
--default-volumes-to-restic
是velero v1.5新引入的参数,可以显示的设置velero的备份方式为restic。查看备份详细信息
velero backup describe wp-backup1这个命令可以看到资源的选择设置:
Namespaces:
Included: wordpress
Excluded: <none>
Resources:
Included: *
Excluded: <none>
Cluster-scoped: auto也可以看到备份的资源数量:
Total items to be backed up: 21
Items backed up: 21加上
--details
,可以看到更详细的信息:velero backup describe wp-backup1 --details
Resource List:
apps/v1/Deployment:
- wordpress/wordpress
- wordpress/wordpress-mysql
apps/v1/ReplicaSet:
- wordpress/wordpress-85bc4595b5
- wordpress/wordpress-mysql-79884bb86c
discovery.k8s.io/v1beta1/EndpointSlice:
- wordpress/wordpress-kcj7g
- wordpress/wordpress-mysql-28hnk
extensions/v1beta1/Ingress:
- wordpress/wordpress-ingress
networking.k8s.io/v1/Ingress:
- wordpress/wordpress-ingress
v1/Endpoints:
- wordpress/wordpress
- wordpress/wordpress-mysql
v1/Namespace:
- wordpress
v1/PersistentVolume:
- pvc-a1b4ee95-f61c-4d52-9b0f-0a5f29c8a559
- pvc-b18f571b-17a3-4a32-9714-b32e490ed4f2
v1/PersistentVolumeClaim:
- wordpress/mysql-pv-claim
- wordpress/wp-pv-claim
v1/Pod:
- wordpress/wordpress-85bc4595b5-snntp
- wordpress/wordpress-mysql-79884bb86c-w8mjh
v1/Secret:
- wordpress/default-token-x7xvw
v1/Service:
- wordpress/wordpress
- wordpress/wordpress-mysql
v1/ServiceAccount:
- wordpress/default
Velero-Native Snapshots: <none included>
Restic Backups:
Completed:
wordpress/wordpress-85bc4595b5-snntp: wordpress-persistent-storage
wordpress/wordpress-mysql-79884bb86c-w8mjh: mysql-persistent-storage可以看到,这次velero一共备份了21个资源,并且
describe
命令可以列出所有的资源,包括版本,API类型与资源名。到这里,我们已经看到了velero在restic文件备份的情况下,对单一namespace备份时备份的所有资源。但是,读者可能还有疑问,velero是怎么选择出来的这些资源的?要进一步的答案,我们可以把velero的log收下来进一步分析收集velero的log
kubectl logs -n <velero-namespace> velero-xxx > velero.log这个log可能会有点长,读者可以节选一下刚刚备份的log。例如,可以用vi打开这个log,找到备份时间点的
Setting up backup log
行,这是单次备份开始时的第一条log。再往下找到Backup completed
,这是单次备份结束的log,然后把中间的log保存到另一个文件,比如include-none-exclude-none-ns-wordpress.log
。在后面章节中,我们可以通过velero的代码和收集的log来分析一下velero的资源收集过程。
实验二:用快照方式备份
创建快照备份
[root]# velero backup create wp-backup-snapshot1 --include-namespaces=wordpress --snapshot-volumes --volume-snapshot-locations default--snapshot-volumes
也是v1.5引入的参数,表示备份过程中用CSI来生成快照并备份下来。查看备份信息
先用
velero backup describe wp-backup-snapshot1
进行查看,发现备份未完成时,先显示预估的待资源数量是24,以及当前备份了几个资源:Estimated total items to be backed up: 24
Items backed up so far: 6备份完之后,用
velero backup describe wp-backup-snapshot1 --details
进行查看:Total items to be backed up: 26
Items backed up: 26
Resource List:
apps/v1/Deployment:
- wordpress/wordpress
- wordpress/wordpress-mysql
apps/v1/ReplicaSet:
- wordpress/wordpress-85bc4595b5
- wordpress/wordpress-mysql-79884bb86c
discovery.k8s.io/v1beta1/EndpointSlice:
- wordpress/wordpress-kcj7g
- wordpress/wordpress-mysql-28hnk
extensions/v1beta1/Ingress:
- wordpress/wordpress-ingress
networking.k8s.io/v1/Ingress:
- wordpress/wordpress-ingress
snapshot.storage.k8s.io/v1beta1/VolumeSnapshot:
- wordpress/velero-mysql-pv-claim-7vpfs
- wordpress/velero-wp-pv-claim-fv6hf
snapshot.storage.k8s.io/v1beta1/VolumeSnapshotClass:
- csi-rbdplugin-snapclass
snapshot.storage.k8s.io/v1beta1/VolumeSnapshotContent:
- snapcontent-92604f14-79b1-4a2e-8a8e-0ac40a28cb3f
- snapcontent-ff9dd95a-297b-47c2-9430-6de87f11af70
v1/Endpoints:
- wordpress/wordpress
- wordpress/wordpress-mysql
v1/Namespace:
- wordpress
v1/PersistentVolume:
- pvc-a1b4ee95-f61c-4d52-9b0f-0a5f29c8a559
- pvc-b18f571b-17a3-4a32-9714-b32e490ed4f2
v1/PersistentVolumeClaim:
- wordpress/mysql-pv-claim
- wordpress/wp-pv-claim
v1/Pod:
- wordpress/wordpress-85bc4595b5-snntp
- wordpress/wordpress-mysql-79884bb86c-w8mjh
v1/Secret:
- wordpress/default-token-x7xvw
v1/Service:
- wordpress/wordpress
- wordpress/wordpress-mysql
v1/ServiceAccount:
- wordpress/default可以看到,所有备份的资源数量变成的26,下面列出了所有的资源。
收集log
同样,这里参考前面章节把velero的log收好备用:
include-none-exclude-none-ns-wordpress-snapshot.log
参考
Enable API group versions
velero 1.5 backup reference
velero 1.5 repo
更多velero相关技术讨论,敬请关注velero中文社区官方网站:
https://velero.cn/




