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 ジョブコントローラーは、現在から締め切りまでの間隔で、失敗したジョブの数をカウントする点に注意してください。たとえば、
startingDeadlineSeconds
が200
に設定されている場合には、コントローラーは過去 200 秒間に失敗したジョブの数をカウントします。詳細は、cron ジョブの概念に関する Kubernetes ドキュメントの cron ジョブ の制限を参照してください。 - 4 4
- オプション: 一時停止フィールドは、後続の cron ジョブが実行されないようにするために使用します。
true
に設定すると、後続のすべての実行が開始されなくなります。デフォルトでは、値はfalse
となっており、ジョブは実行されます。 - 5
- オプション: 成功したジョブ履歴の制限では、保持する完了ジョブの数を指定します。デフォルトでは、3 つのジョブが保持されます。
- 6
- オプション: 失敗したジョブ履歴の制限では、保持する失敗したジョブの数を指定します。デフォルトでは、1 つのジョブが保持されます。
- 7
- ジョブテンプレートは、実行するジョブを指定します。このフィールドは、ジョブの例 に似ています。
- 8
- オプション:labels フィールドは、cron ジョブで開始するジョブに設定するラベルを指定します。この例では、ジョブには
parent = cronjobpi
のラベルが指定されます。 - 9
- オプション: ジョブの実行を開始する Pod の restart policy。ポリシーは、
Always
、OnFailure
、または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 run
は Never
または OnFailure
再起動ポリシー (--restart
) のみをサポートします。
必要なくなった Cron ジョブを削除します。
$ oc delete cronjob/<cron_job_name>
これを実行することで、不要なアーティファクトの生成を防げます。