hello云胜

技术与生活

0%

velero备份失败排查与解决

最近发现有一个集群的velero经常失败。

排查经过

  1. 查看velero备份状态
1
2
3
4
# 所有的备份
kubectl -n velero get backups
# 查看具体某个备份的状态
kubectl -n velero describe backups backup-all-20230409170058

image-20230411103629111

发现其状态是InProgress

如果是正常完成的

screenshot-20230411-103052

状态会是Completed

也可以通过

1
velero get backups

查看

image-20230411111421220

  1. 查看velero备份日志

    1
    2
    # velero backup logs backup-all-20230410170007
    Logs for backup "backup-all-20230410170007" are not available until it's finished processing. Please wait until the backup has a phase of Completed or Failed and try again.

    发现只有完成的或失败的,才能看日志,InProgress状态的不能查看日志

  2. 看一下velero的pod的日志

    1
    kubectl -n velero logs velero-84c6fd74dc-q7gph

    全是info日志,没有看出什么

    然后describe一下pod看看

    1
    kubectl -n velero describe pod velero-84c6fd74dc-q7gph

    image-20230411105633827

因为是OOM问题,把memory限制改大点试试。

修改其deployment

1
kubectl -n velero edit deploy velero

image-20230411111014097

根因

当velero的backup的集群或者namespace里资源比较多的情况下,容易触发OOM。

这些OOM的backup任务就会停留在InProgress状态

OOM之后,velero的pod重启,但是并不会执行之前InProgress状态的任务

所以就一直是InProgress状态

后来查看github发现,这是velero的一个bug,在1.8.0版本修复了。

想要升级velero,结果发现我们的k8s集群版本是1.17,velero1.8要求k8s在1.18以上,无奈作罢。

image-20230411113708458

后续观察

经过几天的观察,发现效果还不错。最近几天都是Completed

image-20230414094559150