【k8s运维】velero备份失败排查与解决

634 阅读1分钟

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

========================

排查经过

  1. 查看velero备份状态

    所有的备份

    kubectl -n velero get backups

    查看具体某个备份的状态

    kubectl -n velero describe backups backup-all-20230409170058

发现其状态是InProgress

如果是正常完成的

状态会是Completed

也可以通过

velero get backups

查看

  1. 查看velero备份日志

    # 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的日志

    kubectl -n velero logs velero-84c6fd74dc-q7gph
    

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

    然后describe一下pod看看

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

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

修改其deployment

kubectl -n velero edit deploy velero

根因

当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以上,无奈作罢。

后续观察

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