Velero 安装步骤
客户端
https://github.com/vmware-tanzu/velero/releases
下载并安装最新版本二进制客户端。
1cp velero /usr/local/bin && chmod +x /usr/local/bin/velero
2
3velero version
4Client:
5 Version: v1.13.2
6 Git commit: 4d961fb6fec384ed7f3c1b7c65c818106107f5a6
7<error getting server version: no matches for kind "ServerStatusRequest" in version "velero.io/v1">
服务端
- 准备好秘钥文件
credentials-velero
,即 MinIO 的用户名密码。
1[default]
2aws_access_key_id=<access key id>
3aws_secret_access_key=<secret access key>
- 使用
velero install
安装服务端
1velero install \
2 --provider aws \
3 --image velero/velero:v1.13.2 \
4 --plugins velero/velero-plugin-for-aws:v1.9.2 \
5 --bucket velero \
6 --secret-file ./credentials-velero \
7 --use-node-agent \
8 --use-volume-snapshots=false \
9 --namespace velero \
10 --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://10.101.6.118:9000 \
11 --wait
1velero version
2Client:
3 Version: v1.13.2
4 Git commit: 4d961fb6fec384ed7f3c1b7c65c818106107f5a6
5Server:
6 Version: v1.13.2
Velero 使用
备份
1velero create backup NAME [flags]
backup选项:
--exclude-namespaces stringArray
: 要从备份中排除的名称空间--exclude-resources stringArray
: 要从备份中排除的资源,如storageclasses.storage.k8s.io
--include-cluster-resources optionalBool[=true]
: 包含集群资源类型--include-namespaces stringArray
: 要包含在备份中的名称空间(默认’*')--include-resources stringArray
: 备份中要包括的资源--labels mapStringString
: 给这个备份加上标签-o, --output string
: 指定输出格式,支持’table’、‘json’和’yaml’;-l, --selector labelSelector
: 对指定标签的资源进行备份--snapshot-volumes optionalBool[=true]
: 对 PV 创建快照--storage-location string
: 指定备份的位置--ttl duration
: 备份数据多久删掉--volume-snapshot-locations strings
: 指定快照的位置,也就是哪一个公有云驱动
通常,直接使用默认命令即可。
1velero backup create <name>
查看备份列表
1velero backup get
定时备份
1# 创建定时备份计划
2velero schedule create k8s-daily --schedule="0 1 * * *"
3
4# 查看定时备份计划
5velero schedule get
恢复
velero restore
的行为不是覆盖,是恢复,不会覆盖已有的资源,只恢复当前集群中不存在的资源。已有的资源不会回滚到之前的版本,如需要回滚,需在restore之前提前删除现有的资源。
1velero restore create --from-backup <name>
其他命令
1# 查看备份位置
2velero get backup-locations
3
4NAME PROVIDER BUCKET/PREFIX PHASE LAST VALIDATED ACCESS MODE DEFAULT
5default aws finley007 Available 2022-03-10 22:23:28 +0800 CST ReadWrite true
6
7# 查看已有恢复
8velero get restores
9
10# 查看 velero 插件
11velero get plugins
12
13# 删除 velero 备份
14velero backup delete nginx-backup
15
16# 持久卷备份
17velero backup create nginx-backup-volume --snapshot-volumes --include-namespaces nginx-example
18
19# 持久卷恢复
20velero restore create --from-backup nginx-backup-volume --restore-volumes
21
22# 创建集群所有namespaces备份,但排除 velero,metallb-system 命名空间
23velero backup create all-ns-backup --snapshot-volumes=false --exclude-namespaces velero,metallb-system
24
25# 周期性定时备份
26# 每日3点进行备份
27velero schedule create <SCHEDULE NAME> --schedule "0 3 * * *"
28
29# 每日3点进行备份,备份保留48小时,默认保留30天
30velero schedule create <SCHEDULE NAME> --schedule "0 3 * * *" --ttl 48
31
32# 每6小时进行一次备份
33velero create schedule <SCHEDULE NAME> --schedule="@every 6h"
34
35# 每日对 web namespace 进行一次备份
36velero create schedule <SCHEDULE NAME> --schedule="@every 24h" --include-namespaces web
迁移
1# 在集群1上做一个备份:
2$ velero backup create <BACKUP-NAME> --snapshot-volumes
3
4# 在集群2上做一个恢复:
5$ velero restore create --from-backup <BACKUP-NAME> --restore-volumes
6
7# velero 清理
8$ kubectl delete namespace/velero clusterrolebinding/velero
9$ kubectl delete crds -l component=velero