在Kubernetes环境中,Loki无法成功保存日志的情况
环境
-
- kubernetes 1.21
-
- loki 2.4
- agentはpromtail
情况
如果任务或计划任务处理很快完成,可能无法保存日志。
已经调查过的事情
-
- 処理時間が大体1秒以下くらいで保存できないことが多くなる
-
- promtailがpodをターゲットに追加できていない
promtailのkubernetes target discoveryはprometheusのものを使っている
kubernetes apiをwatchしていて、ポーリングではない
podの作成から補足できてないのか、そこはできてるけどログのターゲットに追加できないのか、は不明
kubectl get po -wで見る場合は、ログ保存できないようなpodでも作成は補足できている
我有一点不太明白……
应对
因为我没有正确理解原因,所以我只能在我能看见的范围内适当地保存。
就工作而言
spec.ttlSecondsAfterFinished を使ってpodの寿命を伸ばす
10秒くらいにしとけば間違いないでしょう
如果是cronJob的情况
-
- 現状の設定のspec.successfulJobsHistoryLimitが1以上の場合
特に対応しなくてもこの現象は起きてないはず
現状の設定のspec.successfulJobsHistoryLimitが0の場合
spec.successfulJobsHistoryLimitを1にする
spec.jobTemplate.spec.ttlSecondsAfterFinishedを設定する
これも10秒くらいで
在`successfulJobsHistoryLimit`设置中,所剩下的Pod将不会持续存在,而是大约在10秒钟后消失。
其他
preStop命令不能使用。
preStop这个事件是由apiserver发送的删除pod命令触发的,所以在自身退出的作业中不会触发。
侧边车战术
我成功地创建了一个侧边容器并睡眠了10秒,虽然不太理解,但好像可以保存…
首先
也许没有必要保留只持续不到1秒的任务日志,
但如果未保存正常运行的日志发生问题,可能会引起误导。