「 Velero 」快速开始

「 Velero 」快速开始


based on v1.6.3

概述

Velero 可以提供备份和还原 Kubernetes 集群资源和持久卷的能力,可以在公有云或本地搭建的私有云环境安装 Velero,可以提供以下能力:

  • 备份集群数据,并在集群故障的情况下进行还原
  • 将集群资源迁移到其他集群
  • 将生产集群复制到开发和测试集群

Velero 包含一个在集群上运行的服务器端和在本地运行的命令行客户端。

Velero 官方文档

安装

install

1
$ velero install

可选的 flags 包括

名称 含义
–backup-location-config 描述 BackupStorageLocation 的配置信息
–bucket BackupStorageLocation 中 bucket 信息,参考对象存储中的概念
和 no-default-backup-location 必须存在其一
–cacert 连接 BackupStorageLocation 时所需要的 TLS 证书
–crds-only 仅生成 CRD 资源类别,默认为 false
主要用于已经安装 Velero 的集群升级 CRD
–crds-version 默认为 v1,指定 CRD 的 resource version
–default-restic-prune-frequency 对 Restic repo 执行 restic prune 的默认周期,默认为 1 周
–default-volumes-to-restic 全局参数,表示是否由 Restic 备份所有的 Pod 卷,默认为 false
–dry-run 生成资源,但是不会实际创建
通常会和 -o 参数一起使用,指定默认输出格式
–image Velero 和 Restic Pod 的镜像,默认和 Velero binary 版本一致
–label-columns 在 table 样式下,自定义表格栏展示
–no-default-backup-location 表示是否创建默认的 BackupStorageLocation,默认为 false
和 provider & bucket 必须存在其一
–no-secret 不为 BackupStorageLocation 生成认证 Secret
和 –secret-file 必须存在其一
–output dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml
–plugins Velero plugin 的镜像
–pod-annotations Velero 和 Restic Pod 中追加的注释信息
–prefix BackupStorageLocation 中 prefix 信息,参考对象存储中的概念
–provider 指定 StorageProvider,例如 aws, gcp 等
和 no-default-backup-location 必须存在其一
–restic-pod-cpu-limit/–restic-pod-cpu-request/
–restic-pod-mem-limit/–restic-pod-mem-request
Restic Pod 的资源限制信息
–restore-only 是否以 Restore-Only 形式运行服务,即 Backup、Schedule 和 GC controller 都会被禁用,仅启动 Restore Controller
参数已经废弃,取而代之的是将 BackupStorageLocation 设为 ReadOnly
–sa-annotations Velero 的 ServiceAccount 中追加的注释信息
–secret-file BackupStorageLocation 所需要的认证文件
Velero 会将该文件以 Secret 形式创建,并挂载在 Velero 的 /cloud/credentials;和 –no-secret 必须存在其一
–show-labels 在 table 样式下,最后一栏展示标签信息
–snapshot-location-config 描述 VolumeSnapshotLocation 的配置信息
–use-restic 是否同时创建 Restic 服务
–use-volume-snapshots 是否自动创建一个 SnapshotLocation,默认为 true
–velero-pod-cpu-limit/–velero-pod-cpu-request/
–velero-pod-mem-limit/–velero-pod-mem-request
Velero Pod 的资源限制信息
–wait 阻塞直至 Velero deployment 是 Ready
手动退出等待可以 ctrl-c,并不会影响到安装流程

uninstall

1
$ velero uninstall

可选的 flags 包括

名称 含义
–force 是否强制卸载,忽略确认信息,默认为 false
–wait 阻塞直至 Velero 被完全卸载
手动退出等待可以 ctrl-c,并不会影响到卸载流程

Customize

Velero Server

以下参数均为 Velero 服务启动时的额外参数

部分参数可以通过 install 指定,而其余参数只能通过定制化 Velero Deployment 的启动参数

名称 含义
–log-level 日志级别,可选的有 debug、info、warn、error、fatal、panic 和 trace,默认为 Info
在安装 velero 服务时的全局参数 -v 代表时 velero 调用其他第三方库时透传下去的日志级别,而非 velero 本身的日志级别,第三方库采用的日志库通常为 klog 或者 glog 等,通过 -v 指定日志级别,高于该级别的日志不会输出,如 -v = 5。 Velero 采用的日志库为 logrus,有 debug 、 info 、 warn 、 error 、 fatal 、 panic 和 trace,通过该参数指定,低于该级别的日志不会输出。
–log-format 日志格式,可选的有 text 和 json,默认为 text
–plugin-dir Velero Plugins 的存放位置,默认为 /plugins
–metrics-address 暴露至 Prometheus 的端口,默认为 8085
–backup-sync-period 备份同步的时间间隔,默认为 1 分钟,设置为 0 时表示禁用同步
–restic-timeout Pod 卷备份与恢复的执行超时时间,默认为 240 分钟
–restore-only 是否以 Restore-Only 形式运行服务,即 Backup、Schedule 和 GC controller 都会被禁用,仅启动 Restore Controller
参数已经废弃,取而代之的是将 BackupStorageLocation 设为 ReadOnly
–disable-controllers 禁止启动的 Controller,可选的有 Backup、BackupDeletion、BackupSync、DownloadRequest、GarbageCollection、ResticRepo、Restore、Schedule 和 ServerStatusRequest,默认不禁止
–restore-resource-priorities 期望的资源恢复顺序,任何不在列表中的资源都将在优先资源之后按字母顺序恢复,默认恢复顺序为
1. customresourcedefinitions
2. namespaces
3. storageclasses
4. volumesnapshotclass.snapshot.storage.k8s.io
5. volumesnapshotcontents.snapshot.storage.k8s.io
6. volumesnapshots.snapshot.storage.k8s.io
7. persistentvolumes
8. persistentvolumeclaims
9. secrets
10. configmaps
11. serviceaccounts
12. limitranges
13. pods
14. replicasets.apps
15. clusters.cluster.x-k8s.io
16. clusterresourcesets.addons.cluster.x-k8s.io
–default-backup-storage-location 默认的 BackupStorageLocation 名称,默认为 default
参数已经废弃,取而代之的是将 BackupStorageLocation 的 –default 设置为 true
–store-validation-frequency BackupStorageLocation 的检验时间间隔,默认为 1 分钟,设置为 0 时表示禁用校验
–default-volume-snapshot-locations SnapshotProvider 的信息,例如 provider1:location-01,provider2:location-02
–client-qps 访问 Kubernetes API 的最大 QPS,默认为 20,如果为 0,则置为 5
详情查看 client-go
–client-burst 访问 Kubernetes API 的最大突发请求量,默认为 30,如果为 0,则置为 10
详情查看 client-go
–profiler-address pprof 信息的地址,默认为 localhost:6060
–terminating-resource-timeout 恢复期间等待 PV 和 namespace 创建完成的超时时间,默认为 10 分钟
–default-backup-ttl backup 的过期时间,默认为 30 天
–default-restic-prune-frequency 对 Restic repo 执行 restic prune 的周期,默认为 1 周
–default-volumes-to-restic 是否由 Restic 备份所有的 Pod 卷,默认为 false

Restic Server

以下参数均为 Restic 服务启动时的额外参数

由于 Restic 不存在安装命令,因此只能通过定制化 Restic DaemonSet 的启动参数

名称 含义
–log-level 日志级别,可选的有 debug、info、warn、error、fatal、panic 和 trace,默认为 Info
在安装 velero 服务时的全局参数 -v 代表时 velero 调用其他第三方库时透传下去的日志级别,而非 velero 本身的日志级别,第三方库采用的日志库通常为 klog 或者 glog 等,通过 -v 指定日志级别,高于该级别的日志不会输出,如 -v = 5。 Velero 采用的日志库为 logrus,有 debug 、 info 、 warn 、 error 、 fatal 、 panic 和 trace,通过该参数指定,低于该级别的日志不会输出。
–log-format 日志格式,可选的有 text 和 json,默认为 text

仓库

StorageProvider

StorageProvider 用于存放备份过程中产生的元数据信息、由 Restic 备份的卷数据信息、备份和恢复的任务日志等,对应的资源对象为 BackupStorageLocation。

create

BackupStorageLocation API

1
$ velero backup-location create

可选的 flags 包括

名称 含义
–access-mode 访问权限,默认为 ReadWrite,可选值有 ReadWrite 和 ReadOnly
–backup-sync-period 备份同步的时间间隔,默认为 1 分钟,设置为 0 时表示禁用同步
–bucket BackupStorageLocation 中 bucket 信息,参考对象存储中的概念
–cacert 连接 BackupStorageLocation 时所需要的 TLS 证书
–config 描述 BackupStorageLocation 配置信息
–credential 连接 BackupStorageLocation 所需要的认证信息
格式为 key-value,key 为 K8s secret 的名称,value 为 secret 中的 key,仅支持一对
–default 是否为默认的 BackupStorageLocation
–label-columns 在 table 样式下,自定义表格栏展示
–labels 设置创建出来的 BackupStorageLocation 对象的标签信息
–output dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml
–prefix BackupStorageLocation 中 prefix 信息,参考对象存储中的概念
–provider 指定 StorageProvider,例如 aws, gcp 等
–show-labels 在 table 样式下,最后一栏展示标签信息
–validation-frequency BackupStorageLocation 的检验时间间隔,默认为 1 分钟,设置为 0 时表示禁用校验

delete

1
$ velero backup-location delete

可选的 flags 包括

名称 含义
–all 删除所有 BackupStorageLocation 对象
–confirm 确认删除交互
–selector 删除满足标签选择的所有 BackupStorageLocation 对象

name,–all 和 –selector 仅能指定一个

get

1
$ velero backup-location get

可选的 flags 包括

名称 含义
–default 仅展示默认的 BackupStorageLocation
–label-columns 在 table 样式下,自定义表格栏展示
–output 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table
–selector 可以通过标签选择器展示符合要求的 BackupStorageLocation 对象
–show-labels 在 table 样式下,最后一栏展示标签信息

set

1
$ velero backup-location set

可选的 flags 包括

名称 含义
–cacert 连接 BackupStorageLocation 时所需要的 TLS 证书
–credential 连接 BackupStorageLocation 所需要的认证信息
格式为 key-value,key 为 K8s secret 的名称,value 为 secret 中的 key,仅支持一对
–default 设置为默认的 BackupStorageLocation
默认的仅能有一个,其余的会被设置为 false

SnapshotProvider

SnapshotProvider 用于存放备份过程中的卷快照数据,数据源自于 SnapshotProvider Plugin。

create

VolumeSnapshotLocation API

1
$ velero snapshot-location create

可选的 flags 包括

名称 含义
–config 描述 VolumeSnapshotLocation 的配置信息
–label-columns 在 table 样式下,用于自定义表格栏信息
–labels 设置创建出来的 VolumeSnapshotLocation 对象的标签信息
–output 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table
–provider 指定 SnapshotProvider,例如 aws, gcp 等
–show-labels 在 table 样式下,最后一栏展示标签信息

get

1
$ velero snapshot-location get

可选的 flags 包括

名称 含义
–label-columns 在 table 样式下,自定义表格栏信息展示
–output dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml
–selector 可以通过标签选择器获取符合要求的 VolumeSnapshotLocation 对象
–show-labels 在 table 样式下,最后一栏展示标签信息

ResticRepository

目前 Velero 仅支持 Restic AWS、AZURE 和 GCP 作为卷数据存储,数据的采集和传输均由 Velero Restic 操作,目标会上传至卷数据存储,对应的资源对象为 ResticRepository。

repo

get

1
$ velero restic repo get

可选的 flags 包括

名称 含义
–label-columns 在 table 样式下,自定义表格栏信息展示
–output dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml
–selector 可以通过标签选择器获取符合要求的 ResticRepository 对象
–show-labels 在 table 样式下,最后一栏展示标签信息

插件

add

1
$ velero plugin add	

name 就是镜像地址

可选的 flags 包括

名称 含义
–image-pull-policy plugin 镜像的拉取策略,可选的有 Always,IfNotPresent 和 Never,默认为 IfNotPresent

get

1
$ velero plugin get

可选的 flags 包括

名称 含义
–output 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table
–timeout 命令输出的超时时间,默认为 5 秒钟

remove

1
$ velero plugin remove

备份

即时备份

即时备份(on-demand)也就是单次的备份任务,对应的资源对象为 Backup。

create

Backup API

1
$ velero backup create <name>

可选的 flags 包括

名称 含义
–default-volumes-to-restic 默认为 true,即由 restic 备份所有的 Pod 卷
如果不指定,则以全局的为主
–include-namespaces / –exclude-namespaces 显式包含/排除的命名空间,支持逗号分割
–include-resources / –exclude-resources 显式包含/排除的资源,支持逗号分割
–from-schedule 基于某一个定时备份创建一次即时备份
指定此参数时,其他的 filter flag 均会失效,并以 Schedule 的模板为准;不指定备份名称时会以 schedule-timestamp 作为备份任务名称
–include-cluster-resources 是否备份集群级别的资源,默认为 true
即使开启了此特性,如果并未备份全量 namespaces 的资源,仍然不会备份集群级别资源
–label-columns 在 table 样式下,用于自定义表格栏信息
–labels 设置创建出来的 Backup 对象的标签信息
–ordered-resources 指定备份的顺序
集群级别的资源格式为 resource name,非集群级别的资源格式为 namespace/resource name,例如 pods=ns1/pod1,ns1/pod2;persistentvolumeclaims=ns1/pvc4,ns1/pvc8
–output dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml
–selector 可以通过标签选择器备份符合要求的资源
–show-labels 在 table 样式下,最后一栏展示标签信息
–snapshot-volumes 默认为 true,即备份时,默认会对 PV 资源调用 SnapshotProvider 打快照
–storage-location 指定 BackupStorageLocation,仅支持单个
–ttl 过期时间,默认 720 小时
–volume-snapshot-locations 指定 VolumeSnapshotLocation,支持多个
–wait 阻塞直至备份状态不再是 New 或者 InProgress
手动退出等待可以 ctrl-c,并不会影响到备份任务

delete

velero backup 的删除涉及到存储在远端数据的同步删除,因此并非单纯删除 Backup 对象,而是借助于 DeleteBackupRequest 对象。

DeleteBackupRequest API

1
$ velero backup delete

可选的 flags 包括

名称 含义
–all 删除所有资源
–confirm 确认删除交互
–selector 删除满足标签选择的所有资源

name,–all 和 –selector 仅能指定一个

describe

1
$ velero backup describe

可选的 flags 包括

名称 含义
–cacert 连接 BackupStorageLocation 时所需要的 TLS 证书
–details 更详细的信息输出
–insecure-skip-tls-verify 是否跳过 TLS 验证,默认为 false
–selector 可以通过标签选择器获取符合要求的 Backup 对象

download

DownloadRequest CR

1
$ velero backup download

可选的 flags 包括

名称 含义
–cacert 连接 BackupStorageLocation 时所需要的 TLS 证书
–force 下载文件存在则覆盖
–insecure-skip-tls-verify 是否跳过 TLS 验证,默认为 false
–output 文件保存的路径,默认为当前目录,名称为 <backup>-data.tar.gz
–timeout 等待下载的超时时间,默认为 1m

get

1
$ velero backup get

可选的 flags 包括

名称 含义
–label-columns 在 table 样式下,自定义表格栏展示
–output 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table
–selector 可以通过标签选择器展示符合要求的 Backup 对象
–show-labels 在 table 样式下,最后一栏展示标签信息

logs

1
$ velero backup logs

可选的 flags 包括

名称 含义
–cacert 连接 BackupStorageLocation 时所需要的 TLS 证书
–insecure-skip-tls-verify 是否跳过 TLS 验证,默认为 false
–timeout 等待获取日志的超时时间,默认为 1 分钟

定时备份

定时备份(schedule)是符合特定时间规律,由 Velero 控制面负责触发的备份任务,对应的资源对象为 Schedule。

create

Schedule CR

1
$ velero schedule create

可选的 flags 包括

名称 含义
–default-volumes-to-restic 是否由 Restic 备份所有的 Pod 卷,默认为 true
优先级小于 velero install 中的对应参数
–include-cluster-resources 是否备份集群级别的资源,默认为 true
即使开启了此特性,如果并未备份全量 namespaces 的资源,仍然不会备份集群级别资源
–include-namespaces / –exclude-namespaces 显式包含/排除的命名空间,支持逗号分割
–include-resources / –exclude-resources 显式包含/排除的资源,支持逗号分割
–label-columns 在 table 样式下,自定义表格栏展示
–labels 设置创建出来的 Backup 对象的标签信息
–ordered-resources 指定备份的顺序
集群级别的资源格式为 resource name,非集群级别的资源格式为 namespace/resource name,例如 pods=ns1/pod1,ns1/pod2;persistentvolumeclaims=ns1/pvc4,ns1/pvc8
–output dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml
–schedule 定时规则的表达式
不仅支持 cron 表达式,还支持易读的形式,例如 “0 */6 * * *” 和 @every 6h
–selector 可以通过标签选择器备份符合要求的资源
–show-labels 在 table 样式下,最后一栏展示标签信息
–snapshot-volumes 备份时,是否会对 PV 资源调用 SnapshotProvider 打快照,默认为 true,
–storage-location 指定 BackupStorageLocation,仅支持单个
–ttl 过期时间,默认 720 小时
–use-owner-references-in-backup 由 Schedule 创建出来的 Backup 是否带有 OwnerReferences 信息,默认为 false,
–volume-snapshot-locations 卷快照的存储后端,支持多个

delete

1
$ velero schedule delete

可选的 flags 包括

名称 含义
–all 删除所有 Schedule 对象
–confirm 确认删除交互
–selector 删除满足标签选择器的所有 Schedule 对象

describe

1
$ velero schedule describe

可选的 flags 包括

名称 含义
–selector 可以通过标签选择器获取符合要求的 Schedule 对象

get

1
$ velero schedule get

可选的 flags 包括

名称 含义
–label-columns 在 table 样式下,自定义表格栏展示
–output 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table
–selector 可以通过标签选择器展示符合要求的 Schedule 对象
–show-labels 在 table 样式下,最后一栏展示标签信息

恢复

create

Restore API

1
$ velero restore create

可选的 flags 包括

名称 含义
–allow-partially-failed 在开启 –from-schedule 时,是否允许从部分失败的 Backup 中恢复
–include-namespaces / –exclude-namespaces 显式包含/排除的命名空间,支持逗号分割
–include-resources / –exclude-resources 显式包含/排除的资源,支持逗号分割
–from-backup 指定从哪一个 Backup 中恢复
–from-schedule 指定从哪一个 Schedule 中恢复
从 Schedule 最新创建的 Backup 恢复
–include-cluster-resources 默认为 true,即恢复集群级别的资源
即使开启了此特性,如果并未恢复全量 namespaces 的资源,仍然不会恢复集群级别资源
–label-columns 在 table 样式下,自定义表格栏展示
–labels 设置创建出来的 Restore 对象的标签信息
–namespace-mappings 恢复时,命名空间的映射关系
例如,src1:dst1,src2:dst2
–output dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml
–preserve-nodeports 恢复时,是否保留 Service 资源的 NodePort 信息,默认为 true,
–restore-volumes 恢复时,是否从快照中恢复卷数据,默认为 true
–selector 可以通过标签选择器恢复符合要求的资源
–show-labels 在 table 样式下,最后一栏展示标签信息
–wait 阻塞直至恢复状态不再是 New 或者 InProgress
手动退出等待可以 ctrl-c,并不会影响到恢复任务

delete

1
$ velero restore delete

可选的 flags 包括

名称 含义
–all 删除所有 Restore 对象
–confirm 确认删除交互
–selector 删除满足标签选择器的所有 Restore 对象

describe

1
$ velero restore describe

可选的 flags 包括

名称 含义
–cacert 连接 BackupStorageLocation 时所需要的 TLS 证书
–details 更详细的信息输出
–insecure-skip-tls-verify 是否跳过 TLS 验证,默认为 false
–selector 可以通过标签选择器获取符合要求的 Restore 对象

get

1
$ velero restore get

可选的 flags 包括

名称 含义
–label-columns 在 table 样式下,自定义表格栏展示
–output 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table
–selector 可以通过标签选择器展示符合要求的 Restore 对象
–show-labels 在 table 样式下,最后一栏展示标签信息

logs

1
$ velero restore logs

可选的 flags 包括

名称 含义
–cacert 连接 BackupStorageLocation 时所需要的 TLS 证书
–insecure-skip-tls-verify 是否跳过 TLS 验证,默认为 false
–timeout 等待获取日志的超时时间,默认为 1 分钟
Author

Shen Xianghong

Posted on

2021-06-07

Updated on

2023-06-19

Licensed under