Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

38.2. Cron ジョブの作成

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

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: pi
spec:
  schedule: "*/1 * * * *"       1
  concurrencyPolicy: "Replace"  2
  startingDeadlineSeconds: 200  3
  suspend: false                4
  successfulJobsHistoryLimit: 3 5
  failedJobsHistoryLimit: 1     6
  jobTemplate:                  7
    spec:
      template:
        metadata:
          labels:               8
            parent: "cronjobpi"
        spec:
          containers:
          - name: pi
            image: perl
            command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
          restartPolicy: OnFailure 9
1 1
ジョブのスケジュールフィールドは cron 形式 で指定されます。この例では、ジョブは 1 分ごとに実行されます。
2 2
オプション: 同時実行ポリシーは、ジョブコントローラーが cron ジョブ内の同時ジョブを処理する方法を指定します。次のポリシーのいずれか 1 つのみを指定できます。
  • Allow を使用すると、ジョブの複数のインスタンスを同時に実行できます。Allow がデフォルト値です。
  • Forbid は、ジョブのインスタンスが複数、同時に実行されないようにします。前の実行が終了していない場合には、スケジュールされた実行はスキップされます。
  • Replace: 現在実行中の ジョブをキャンセルし、ジョブを新規インスタンスに置き換えます。
3 3
オプション: 開始期限は、スケジュールされた実行が何らかの理由で失敗した場合に、ジョブの開始期限 (秒単位) を指定します。期限を過ぎると、cron ジョブはジョブを開始しません。失敗したジョブの実行は、失敗したジョブとしてカウントされます。デフォルトでは、ジョブに期限はありません。このフィールドが設定されている場合には、cron ジョブコントローラーは、現在から締め切りまでの間隔で、失敗したジョブの数をカウントする点に注意してください。たとえば、 startingDeadlineSeconds200 に設定されている場合には、コントローラーは過去 200 秒間に失敗したジョブの数をカウントします。詳細は、cron ジョブの概念に関する Kubernetes ドキュメントの cron ジョブ の制限を参照してください。
4 4
オプション: 一時停止フィールドは、後続の cron ジョブが実行されないようにするために使用します。true に設定すると、後続のすべての実行が開始されなくなります。デフォルトでは、値は false となっており、ジョブは実行されます。
5
オプション: 成功したジョブ履歴の制限では、保持する完了ジョブの数を指定します。デフォルトでは、3 つのジョブが保持されます。
6
オプション: 失敗したジョブ履歴の制限では、保持する失敗したジョブの数を指定します。デフォルトでは、1 つのジョブが保持されます。
7
ジョブテンプレートは、実行するジョブを指定します。このフィールドは、ジョブの例 に似ています。
8
オプション:labels フィールドは、cron ジョブで開始するジョブに設定するラベルを指定します。この例では、ジョブには parent = cronjobpi のラベルが指定されます。
9
オプション: ジョブの実行を開始する Pod の restart policy。ポリシーは、 AlwaysOnFailure 、または Never に設定できます。デフォルトでは、コンテナーは常に再起動されます。このフィールドはジョブコントローラーには適用されないことに注意してください。詳細は、既知の制限 を参照してください。

CronJob 仕様の詳細は、cron ジョブ仕様の作成に関する Kubernetes ドキュメントを参照してください。

注記

すべての cron ジョブ schedule の時間は、ジョブが実行されるマスターのタイムゾーンをベースとします。

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

$ 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 ジョブを削除します。

$ oc delete cronjob/<cron_job_name>

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