KubernetesのCronJob使った時のjobとpodの自動削除について

2023/01/19に公開

はじめに

Kubernetes の Job とか CronJob を使ってみようと思って、下記サイトを見ながら試してみた。

CronJob | Kubernetes
CronJob を使用して自動化タスクを実行する | Kubernetes
Kubernetes 道場 14 日目 - Job / CronJob について - Toku's Blog

CronJob は Linux でいうcrontab的なやつ。

Stack Over

CronJob してると、Job が溜まっていくように見えたので、どうやって消すんやろうと思って調べてたら Stack Overflow に答えが書いてあった。
cron - How to automatically remove completed Kubernetes Jobs created by a CronJob? - Stack Overflow

Job History Limit ってパラメータがあって、それでキープしておくジョブの数を決められるらしい。成功した時の数と失敗した時の数をそれぞれ設定できて、デフォルトでそれぞれ 3 と 1 らしい。
3 つまで増えるところを見て無限に増えてくのかなと勘違いしてた。

公式ドキュメント

公式ドキュメント的にはここに記載があった。

CronJob を使用して自動化タスクを実行する | Kubernetes

Job History Limit
.spec.successfulJobsHistoryLimit と.spec.failedJobsHistoryLimit フィールドはオプションです。これらのフィールドには、完了した Job と失敗した Job をいくつ保持するかを指定します。デフォルトでは、それぞれ 3 と 1 に設定されます。リミットを 0 に設定すると、対応する種類の Job を実行完了後に何も保持しなくなります。

なぜか、英語のドキュメントだと見つからなくて、ドキュメントの変更履歴 (GitHub)を見てたら、こっち(↓)に移動してた。コンセプチュアルなやつをコンセプト書いてあるところに移動したらしい。

CronJob | Kubernetes

Jobs history limits
The .spec.successfulJobsHistoryLimit and .spec.failedJobsHistoryLimit fields are optional. These fields specify how many completed and failed jobs should be kept. By default, they are set to 3 and 1 respectively. Setting a limit to 0 corresponds to keeping none of the corresponding kind of jobs after they finish.

日本語のドキュメントを修正して PR 出しても良いかも。

参考

CronJob を使ってない Job については、ttlSecondsAfterFinishedを設定することで、自動削除できるみたい。
Jobs | Kubernetes

GitHubで編集を提案

Discussion