説明
startingDeadlineSeconds は、予定時刻を過ぎたジョブをいつまで開始できるかを指定します。省略すると、コントローラーの遅延やクラスターの問題の後で、古いジョブが遅れて実行される場合があります。すべての未実行分が必ず再実行されるわけではありません。
実行中の Job の最大実行時間を制限する設定ではありません。遅い実行が許されるジョブでは省略できますが、時間に敏感な処理では許容遅延を明確にする必要があります。
想定される影響
- 遅れて実行されたジョブが、現在のデータや状態に不適切な影響を与える場合があります。
- 短すぎる期限では、通常のコントローラー遅延でも実行が見送られる場合があります。
対処方法
- 開始遅延を制限する必要がある場合は、spec.startingDeadlineSeconds を許容できる遅延に設定してください。コントローラーの確認間隔と運用上の遅延を考慮してください。
- 重複実行に耐えられるジョブを設計し、concurrencyPolicy と再試行を確認してください。実行時間も制限する場合は、Job の activeDeadlineSeconds を別途設定してください。
例
スケジュール設定を比較する例です。実際のコマンドと検証済みイメージのバージョンを別途指定し、100 秒はジョブの要件に合わせて調整してください。
変更前
yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
restartPolicy: OnFailure
開始遅延の期限を明記していません。遅い実行が許されるか確認する必要があります。
変更後
yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
startingDeadlineSeconds: 100
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
restartPolicy: OnFailure
予定時刻から 100 秒の開始期限を設けます。Job の開始後 100 秒で終了させる設定ではありません。