こんにちは。今回は Kubernetes の CronJob で使われる cron スケジュール表現について、具体例を交えてわかりやすく解説します。
⏰ はじめに:CronJob とは?
Kubernetes の CronJob は、指定したスケジュールに従って定期的にジョブ(バッチ処理など)を実行するためのリソースです。
スケジュールの指定には、**cron 式(crontab 形式)**が使われます。
まずはその基本的な書式から見ていきましょう。
📘 cron 式の基本フォーマット
Cron 式は、以下のように 5つのフィールドで構成されます:
分 時 日 月 曜日
例:
0 8 * * 1-5
この場合は「月〜金の毎朝8時に実行」という意味になります。
✅ よく使う cron 式の例
cron 式 | 意味 | 説明 |
---|---|---|
*/1 * * * * |
毎分実行 | 1分おきに常に実行される |
1 * * * * |
毎時1分に実行 | 毎時間の「01分ちょうど」に一回だけ実行 |
0 0 * * * |
毎日0時に実行 | 深夜0時に一回だけ実行 |
0 0 1 * * |
毎月1日の0時に実行 | 月初に一回だけ実行 |
0 8 * * 1-5 |
平日の毎朝8時に実行 | 月〜金のみ、8時ちょうどに実行 |
🔍 */1 * * * *
vs 1 * * * *
の違い
意外と混乱しやすいのが、この2つの違いです。
cron 式 | 意味 | 備考 |
---|---|---|
*/1 * * * * |
毎分 実行 | 1分おき、60回/時 |
1 * * * * |
毎時の1分(01分)に一度実行 | 1回/時、つまり毎時「01分」ちょうど |
*/1
のような書き方は「分を1の倍数(=毎分)」という意味になります。
📦 Kubernetes CronJob に適用すると?
以下は、Kubernetes の CronJob YAML での設定例です:
apiVersion: batch/v1
kind: CronJob
metadata:
name: example-job
spec:
schedule: "0 8 * * 1-5"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the cron job!
restartPolicy: OnFailure
この設定では、「平日(月〜金)の朝8時に実行されるジョブ」が定義されています。
📝 おわりに
Cron 式はシンプルに見えて、1文字違うだけで意味が大きく変わることがあります。
とくに */1
や 1
のような違いは、想定外の動作につながることもあるので注意しましょう!
Kubernetes の CronJob を正しく運用するためにも、スケジュール式の意味をしっかり理解しておくことが重要です 💡
もし他にも「この cron 式どういう意味?」といった疑問があれば、ぜひコメントしてくださいね 😊