Operator实战4:如何获取已经被删除的pod的日记

本文介绍如何在云原生环境中,当Job达到backoffLimit失败并删除Pod时,通过自定义Operator来捕获并保存Pod的日志。解决方案包括在Pod上添加finalizers,监听Job删除,获取日志并存储到ConfigMap或通过Event发送,以解决无法直接查看失败原因的问题。案例中详细展示了针对Terraform Job的日志处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接

需求背景

kubectl logs -p命令并不能获取已经删除的pod的容器日记,只适用于pod只是重启还未被删除的情况,能够获取重启前的容器的日记。

在Job场景,如果Job达到backoffLimit还是失败,而且backoffLimit值很小,很快就重试完,没能及时的获取到容器的日记。而达到backoffLimit后,job的controller会把pod删掉,这种情况就没办法获取pod的日记了,导致无法得知job执行失败的真正原因,只能看到job给的错误:“Job has reached the specified backoff limit”。

解决方案

一种方案就是添加一个controller(operator),监听terraform job创建的pod,然后给pod添加finalizers,然后监听job的删除,在真正删除之前先获取pod的容器的日记,将日记通过configmap保存下来,或者发送event。

有一个缺陷是修改不了Job的状态,因为在job的controller删除pod之后,会更新覆盖job的状态。

案例

这里以我们实际遇到的问题为案例,就是修改terraform apply、terraform destroy的job的backoffLimit为0后,我们无法获取真正terraform执

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴就业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值