1. ホーム
  2. kubernetes

[解決済み] CronJobによって作成された完了したKubernetesジョブを自動的に削除する方法とは?

2022-08-01 10:14:09

質問

完了したジョブを自動的に削除する方法は、完了したジョブをクリーンアップするCronJobを作成する以外にありますか?

その K8s Job ドキュメント には、完了したジョブが手動で削除されるまで完了した状態のままであることが意図された動作であると記載されています。なぜなら、私はCronJobsを介して1日に何千ものジョブを実行しており、完了したジョブを残しておきたくないからです。

どのように解決するのですか?

履歴の制限を設定したり、履歴を完全に無効にしたりできるようになりましたので、失敗したり成功したりしたCronJobがいつまでも残ってしまうことはありません。 私の回答を参照してください。 ここで . ドキュメンテーションは ここから .

を設定するために 履歴の制限 :

.spec.successfulJobsHistoryLimit.spec.failedJobsHistoryLimit フィールドは任意である。これらのフィールドは、完了したジョブと失敗したジョブの数を保持するように指定します。デフォルトではそれぞれ3、1に設定されています。制限を設定することで 0 に設定すると、対応する種類のジョブが終了した後は何も保持しないことになります。

制限を0にした場合の設定は以下のようになります。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  successfulJobsHistoryLimit: 0
  failedJobsHistoryLimit: 0
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure