velero 生产和测试环境配置 : 连接
官方文档: 连接
中文社区: 连接
velero 修改过期时间 :连接
1-查看运行的资源情况
kubectl get ns
kubectl -n xiaoka get pod,replicaset,deployment,configmap,persistentvolumeclaim
2- 查看pod的挂载情况
kubectl -n xiaoka get pod nginx-v1-75fdd94f9b-2rd5b -o jsonpath='{range .spec.volumes[*]}{.*}{"\n"}{end}'
3-查看pvc是使用情况
4-查看configmap的配置内容
kubectl -n xiaoka get configmap redis-conf -o jsonpath='{.data}{"\n"}'
创建备份
Velero 支持两种发现需要使用 Restic 备份的 pod 卷的方法:
Opt-in 方法:包含要使用 Restic 备份的卷的每个 pod 都必须使用卷的名称进行注释。
Opt-out 方法:使用 Restic 备份所有 pod 卷,并能够选择退出任何不应备份的卷。
判断 Restic 备份 pod 卷的方法,安装 velero 是否有带上 --default-volumes-to-restic 进行安装。
根据上一章节安装velero是选择 Opt-in 方法,所以这里只说明 Opt-in 方法。
在 Opt-in
方法中,Velero 将使用 Restic 备份所有 pod 卷,但以下情况除外
Volumes mounting the default service account token, kubernetes secrets, and config maps
Hostpath volumes
开始备份:
备份xiaoka 命名空间资源
velero create backup xiaoka1031 --include-namespaces xiaoka --wait
--wait 是等待显示
恢复服务
备份
velero create backup baimeidashuback123 --include-namespaces baimei
1-模拟故障
kubectl delete ns baimei
2-恢复备份
velero create restore --from-backup baimeidashuback123
如果需要 nodeport的端口 也不变,那么需要带参数 --preserve-nodeports
velero create restore --from-backup monitor-v1 --preserve-nodeports
3-删除备份
velero delete backup baimeidashuback1234
新增备份, 比如我又修改了his 的内容
需要 名称后面加上v1.1,1.2,
velero create backup cloud-test-v1 --include-namespaces cloud-test --ttl 8760h --wait
8760h
是1年。
不然得话不支持增量备份。
velero create backup chattest --include-namespaces chattest --ttl 8760h --wait
{#more-14354}
velero delete backup his
velero get backup
velero create backup his --include-namespaces his
4- 其他命令:
velero get backup #备份查看
velero get schedule #查看定时备份
velero get restore #查看已有的恢复
velero get plugins #查看插件
velero backup logs k8s-all | grep error #过滤 error 关键词查看异常信息
kubectl get backups -A
在crd 里找,
**目录注意:**velero restore 恢复不会覆盖已有的资源,只恢复当前集群中不存在的资源。已有的资源不会回滚到之前的版本,如需要回滚,需在restore之前提前删除现有的资源。
备份所有命名空间:
velero backup logs k8s-all
7、定时备份 {#h6f20189-8zKO0rhn}
比较推荐做定时全量备份,这个能保证我们是一直全量最新备份的状态。
# 每天12点备份一次
velero create schedule k8s-all --schedule="0 0 * * *"
可以设置一个周期性定时备份
# 每日对 web namespace 进行一次备份 velero create schedule <SCHEDULE NAME> --schedule="@every 24h" --include-namespaces web
# 每日1点进行备份
velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *"
# 每日1点进行备份,备份保留48小时
velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *" --ttl 48h
# 每6小时进行一次备份
velero create schedule <SCHEDULE NAME> --schedule="@every 6h"
定时备份的名称为:`<SCHEDULE NAME>-<TIMESTAMP>`,恢复命令为:`velero restore create --from-backup <SCHEDULE NAME>-<TIMESTAMP>`。
如需备份恢复持久卷,备份如下:
velero backup create nginx-backup-volume --snapshot-volumes --include-namespaces nginx-example
该备份会在集群所在region给云盘创建快照(当前还不支持NAS和OSS存储),快照恢复云盘只能在同region完成。
删除 定时计划
先查看 有那些计划:
velero get schedule
velero schedule delete cloud-tomcat
velero create schedule cloud-tomcat --schedule="0 1 * * *" --ttl 48h
生产 备份实战:
mkdir - p /app/scripts/velerotask
cat
cat k8s-ns.txt
里边是 namespace 的 项目列表
oms-test
oms-test-devops5p549
openai
openai-devops24s8d
openai-test
openai-test-devopsd4ptn
cat velerobackupk8s.sh
#!/bin/bash
date=`date +%Y-%m-%d`
for i in `cat /app/scripts/velerotask/k8s-ns.txt`
do
echo $i
echo $date
#velero delete backup $i
#7天
/usr/local/bin/velero create backup ${i}-${date} --include-namespaces $i --ttl 170h
#1天
#velero create backup ${i}-${date} --include-namespaces $i --ttl 20h
done
/usr/local/bin/velero 这个要加上, 不然定时任务会失败。
定时任务:
cat /etc/crontab
#每周五1点执行备份k8s
00 01 * * 5 root sh /app/scripts/velerotask/velerobackupk8s.sh &> /var/log/k8spvs_rsync.log
8- restic
当执行velero delete backup的时候,他会立刻到bucket中删除backups与restores的相关内容,但是值得一提的是restic中的数据不会立刻被删除,velero有一个Resticrepository的自定义CRD资源,在里面会有restic的执行计划任务程序,默认7天执行一次,会将没有backup引用的restic废弃数据给删除,到那个事情才会真正的从bucket中删除无用的restic数据从而释放硬盘空间,希望各位可以留意这一点
你去改CRD里边,搜索restic,会有resticrepository,这个自定义资源,进去里边改扫描restic清理时间倒计时时间
当执行velero delete backup的时候,他会立刻到bucket中删除backups与restores的相关内容,但是值得一提的是restic中的数据不会立刻被删除,velero有一个Resticrepository的自定义CRD资源,在里面会有restic的定时任务程序,默认7天执行一次,会将没有backup引用的restic废弃数据给删除掉,到那个时候才会真正的从bucket中删除无用的restic数据从而释放硬盘空间,你也可以直接修改这个自定义CRD资源中的内容以达到你期望的执行间隔。希望各位可以留意这一点
改成1m,1分钟扫描一次,这样你删除掉backup等1分钟他就回去bucket中去删restic了
你可以平衡一下加上--ttl过期日期,别30d
发现问题: