スケジュールされたバッチ処理用CronJob

データベースクリーンアップ、レポート生成、データ同期などのスケジュールされたタスク用のKubernetes CronJobマニフェストを作成します。スケジュールと同時実行の設定が可能です。

Scheduling

詳細な説明

Kubernetes CronJobs

CronJobsはLinuxのcronと同様にスケジュールでJobを作成します。データベースメンテナンス、レポート生成、キャッシュウォーミング、データ同期などの定期的なタスクに最適です。

主要な設定

apiVersion: batch/v1
kind: CronJob
metadata:
  name: db-cleanup
  labels:
    app: "db-cleanup"
spec:
  schedule: "0 2 * * *"
  concurrencyPolicy: Forbid
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: cleanup
              image: my-cleanup-script:latest

スケジュール構文

scheduleフィールドは5つのフィールドの標準cron構文を使用します:

フィールド
0-59 0(0分に)
0-23 2(午前2時に)
月の日 1-31 *(毎日)
1-12 *(毎月)
曜日 0-6 *(毎日)

同時実行ポリシー

  • Allow(デフォルト):複数のジョブが同時に実行可能
  • Forbid:前のジョブがまだ実行中の場合は新しいジョブをスキップ
  • Replace:実行中のジョブをキャンセルして新しいジョブを開始

データベースクリーンアップでは、Forbidがロックや競合を引き起こす可能性のある重複クリーンアップ操作を防ぎます。

再起動ポリシー

CronJobポッドはrestartPolicy: OnFailureまたはrestartPolicy: Neverを使用する必要があります。デフォルトのAlwaysポリシーは、完了したジョブが無限に再起動するため許可されていません。

ユースケース

データベースバキューム、ログローテーション、バックアップ作成、レポート生成、システム間のデータ同期などの定期的なタスクをKubernetesでスケジューリングする。

試してみる — K8s Pod Spec Builder

フルツールを開く