第39章 Cron ジョブ


39.1. 概要

cron ジョブ は、ジョブの実行スケジュールを具体的に指定できるようにして、通常の「ジョブ」をベースにビルドします。Cron ジョブは Kubernetes API の一部であり、他の「オブジェクトタイプ」と同様に oc コマンドで管理できます。

警告

Cron ジョブはスケジュールの実行時間ごとに約 1 回ずつジョブオブジェクトを作成しますが、ジョブの作成に失敗したり、2 つのジョブが作成される可能性のある状況があります。そのためジョブはべき等である必要があり、履歴制限を設定する必要があります。

39.2. Cron ジョブの作成

Cron ジョブの設定は以下の主な部分で構成されます。

  • cron 形式で指定されるスケジュール。
  • 次のジョブの作成時に使用されるジョブテンプレート。
  • ジョブを開始するためのオプションの期限 (秒単位)(何らかの理由によりスケジュールされた時間が経過する場合)。ジョブの実行が行われない場合、ジョブの失敗としてカウントされます。これが指定されない場合は期間が設定されません。
  • ConcurrencyPolicy: オプションの同時実行ポリシー。Cron ジョブ内での同時実行ジョブを処理する方法を指定します。以下の同時実行ポリシーの 1 つのみを指定できます。これが指定されない場合、同時実行を許可するようにデフォルト設定されます。

    • Allow: Cron ジョブを同時に実行できます。
    • Forbid: 同時実行を禁止し、直前の実行が終了していない場合は次の実行を省略します。
    • Replace: 同時に実行されているジョブを取り消し、これを新規ジョブに置き換えます。
  • Cron ジョブの停止を許可するオプションのフラグ。これが true に設定されている場合、後続のすべての実行が停止されます。

以下は、CronJob リソースのサンプルです。

Copy to Clipboard Toggle word wrap
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: pi
spec:
  schedule: "*/1 * * * *"  
1

  jobTemplate:             
2

    spec:
      template:
        metadata:
          labels:          
3

            parent: "cronjobpi"
        spec:
          containers:
          - name: pi
            image: perl
            command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
          restartPolicy: OnFailure 
4
  1. ジョブのスケジュールです。この例では、ジョブは 1 分ごとに実行されます。
  2. ジョブテンプレートです。これは、ジョブのサンプルに似ています。
  3. この Cron ジョブで生成されるジョブのラベルを設定します。
  4. Pod の再起動ポリシーです。これは、ジョブコントローラーには適用されません。詳細は、「既知の問題および制限」を参照してください。

oc run を使用して単一コマンドから cron ジョブを作成し、起動することもできます。以下のコマンドは直前の例で指定されている同じ cron ジョブを作成し、これを起動します。

Copy to Clipboard Toggle word wrap
$ oc run pi --image=perl --schedule='*/1 * * * *' \
    --restart=OnFailure --labels parent="cronjobpi" \
    --command -- perl -Mbignum=bpi -wle 'print bpi(2000)'

oc run で、--schedule オプションは cron 形式のスケジュールを受け入れます。

注記

Cron ジョブの作成時に、oc runNever または OnFailure 再起動ポリシー (--restart) のみをサポートします。

ヒント

必要なくなった Cron ジョブを削除します。

Copy to Clipboard Toggle word wrap
$ oc delete cronjob/<cron_job_name>

これを実行することで、不要なアーティファクトの生成を防げます。

39.3. Cron ジョブ後のクリーンアップ

.spec.successfulJobsHistoryLimit.spec.failedJobsHistoryLimit のフィールドはオプションです。これらのフィールドでは、完了したジョブと失敗したジョブのそれぞれを保存する数を指定します。デフォルトで、これらのジョブの保存数はそれぞれ 31 に設定されます。制限に 0 を設定すると、終了後に対応する種類のジョブのいずれも保持しません。

Cron ジョブはジョブや Pod などのアーティファクトリソースをそのままにすることがあります。ユーザーは履歴制限を設定して古いジョブとそれらの Pod が適切に消去されるようにすることが重要です。現時点で、これに対応する 2 つのフィールドが Cron ジョブ仕様にあります。

Copy to Clipboard Toggle word wrap
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: pi
spec:
  successfulJobsHistoryLimit: 3 
1

  failedJobsHistoryLimit: 1     
2

  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
  ...
1 1 1
保持する成功した終了済みジョブの数 (デフォルトは 3 に設定)。
2 2 2
保持する失敗した終了済みジョブの数 (デフォルトは 1 に設定)。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.