暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Velero备份了哪些资源(上)

Velero中文社区 2021-06-01
831

更多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方式备份

  1. 创建备份

    [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。

  2. 查看备份详细信息

    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收下来进一步分析

  3. 收集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的资源收集过程。

实验二:用快照方式备份

  1. 创建快照备份

    [root]# velero backup create wp-backup-snapshot1 --include-namespaces=wordpress --snapshot-volumes --volume-snapshot-locations default

    --snapshot-volumes
    也是v1.5引入的参数,表示备份过程中用CSI来生成快照并备份下来。

  2. 查看备份信息

    先用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,下面列出了所有的资源。

  3. 收集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/

文章转载自Velero中文社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论