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
ジョブの schedule フィールドは cron 形式 で指定します。この例では、ジョブは毎分実行されます。
2 2
オプション: 同時実行ポリシーは、ジョブコントローラーが cron ジョブ内の同時実行ジョブを処理する方法を指定します。指定できるのは、以下のいずれかのポリシーのみです。
  • これにより、ジョブの複数のインスタンスを同時に実行できます。allow はデフォルト値です。
  • forbid は、ジョブの複数のインスタンスが同時に実行しないようにします。前回の実行が終了していない場合は、スケジュールされた実行はスキップされます。
  • replace 、ジョブの現在実行中のインスタンスをキャンセルし、ジョブを新規インスタンスに置き換えます。
3 3
オプション: 開始期限は、スケジュールされた実行が何らかの理由により実行が行われていない場合は、ジョブを起動する期限(秒単位)を指定します。期限が経過すると、cron ジョブはジョブを開始しません。ジョブの実行が行われない場合、ジョブが失敗したジョブとしてカウントされます。デフォルトでは、ジョブには期限がありません。このフィールドが設定されると、cron ジョブコントローラーは、deadline の値と現在の時刻よりも間隔内で発生するジョブの数をカウントすることに注意してください。たとえば、startDeadlineSeconds200 に設定すると、コントローラーは最後の 200 秒にミスされたジョブの数をカウントします。詳細は、cron ジョブの概念については、Kubernetes ドキュメントの cron ジョブの制限について参照してください。
4 4
オプション: suspend フィールドは、cron ジョブの後続の実行を防ぐために使用されます。true に設定すると、後続のすべての実行を開始することができなくなります。デフォルトでは、値は false で、ジョブが実行されます。
5
オプション: 成功したジョブ履歴制限は、保持する終了済みジョブの数を指定します。デフォルトでは、3 つのジョブが保持されます。
6
オプション: 失敗したジョブ履歴の制限は、保持する失敗したジョブの数を指定します。デフォルトでは 1 つのジョブが保持されます。
7
ジョブテンプレートは、実行するジョブを指定します。フィールドは ジョブの例 に似ています。
8
オプション: labels フィールドは、cron ジョブによって開始されるジョブに設定するラベルを指定します。この例では、ジョブは parent=cronjobpi ラベルを受信します。
9
オプション: ジョブの実行を開始する Pod の再起動ポリシー。このポリシーは Always、OnFailure、または Never に設定できます。デフォルトでは、コンテナーは常に再起動されます。このフィールドはジョブコントローラーには適用されません。詳細は、「既知の制限 」を参照してください。

CronJob 仕様の詳細は、Kubernetes ドキュメントの「Creating a cron job specification 」を参照してください。

注記

すべての 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>

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