Red Hat Training

A Red Hat training course is available for OpenShift Online

34.2. Cron ジョブの作成

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

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

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

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

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 の再起動ポリシーです。これは、ジョブコントローラーには適用されません。詳細は、「既知の問題および制限」を参照してください。
注記

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

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