LoginSignup
0
0

More than 1 year has passed since last update.

kubernetes環境でlokiがログを保存し損ねるケース

Posted at

環境

  • kubernetes 1.21
  • loki 2.4
  • agentはpromtail

状況

jobやcronjobの処理が一瞬で終了する場合、ログを保存できないことがある

調べたこと

  • 処理時間が大体1秒以下くらいで保存できないことが多くなる
  • promtailがpodをターゲットに追加できていない
    • promtailのkubernetes target discoveryはprometheusのものを使っている
    • kubernetes apiをwatchしていて、ポーリングではない
      • podの作成から補足できてないのか、そこはできてるけどログのターゲットに追加できないのか、は不明
  • kubectl get po -wで見る場合は、ログ保存できないようなpodでも作成は補足できている

ちょっとよくわからないですね…

対応

原因がちゃんとわかってないので、見える範囲でちゃんと保存できてるよ、という対応になります

Jobの場合

  • 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削除命令でトリガーなので、自らのexitで終了するjobでは発火しません

サイドカー戦法

サイドカーコンテナ立ててsleep 10するのでも一応保存できました、よくわからないけど…

そもそも

1秒未満で終了するようなjobのログなんていらないかもしれないですけど
正常動作で出てるはずのログが保存されてないのは何かあった時にミスリードを誘います

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0