CronJobマニフェストの検証
ネストされたジョブテンプレートとPod仕様を含むKubernetes CronJobマニフェストを検証します。バッチコンテナのリソース制限不足などの一般的な問題をチェック。
Workload Types
詳細な説明
CronJobマニフェストの構造
CronJobは深くネストされた構造を持ちます:CronJob > JobTemplate > Job > PodTemplate > PodSpec > Containers。どのレベルの問題も問題を引き起こす可能性があります。
CronJobの例
apiVersion: batch/v1
kind: CronJob
metadata:
name: daily-cleanup
labels:
app: maintenance
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: cleanup
image: busybox:latest
command: ["sh", "-c", "echo cleanup done"]
restartPolicy: OnFailure
バリデーターが検出する問題
- 警告: コンテナ 'cleanup' が ':latest' タグを使用しています
- 警告: コンテナ 'cleanup' にリソースリクエストと制限がありません
- 警告: securityContext.runAsNonRootが設定されていません
CronJob固有の考慮事項
| フィールド | 目的 | デフォルト |
|---|---|---|
spec.schedule |
Cron式 | 必須 |
spec.concurrencyPolicy |
Allow、Forbid、Replace | Allow |
spec.successfulJobsHistoryLimit |
成功ジョブをN個保持 | 3 |
spec.failedJobsHistoryLimit |
失敗ジョブをN個保持 | 1 |
spec.startingDeadlineSeconds |
スキップ前の最大遅延 | なし |
CronJobのベストプラクティス
restartPolicyをOnFailureまたはNeverに設定(Alwaysではなく)- イメージバージョンを固定(
:latestなし) - 短時間ジョブでもリソース制限を設定
- 暴走ジョブ防止のため
activeDeadlineSecondsを設定 - ジョブが重複してはいけない場合は
concurrencyPolicy: Forbidを使用 - 完了したJobオブジェクトの蓄積を避けるため適切な履歴制限を設定
ユースケース
スケジュールされたタスクをデプロイする前にバッチジョブ設定を検証する。CronJobはデータベースバックアップ、ログローテーション、定期的なデータ処理によく使用されます。