Kubernetes
作成日時:2025-11-03
更新日時:2025-11-03
バッチ
cron的にバッチを動かすことができる。(CronJob)
終わったらリソースが消える。(残す設定もある)
費用を最小にできそう。
EC2の余剰リソースで実施してもいいけど。
pending
しばらく止めていたk8sを動かそうとすると、
止まっていたcronJobが一気に動き出し複数のpodがpendingになるかもしれない。
(リソースを割り当てられない状態)
podを消しても、また新しく作られる。
Jobが残っているため。
PendingのPodを停止・削除するには、Podの親であるJobリソースを削除。
# 実行中のJobを確認
kubectl get jobs
# 該当のJobを削除(関連するPodも同時に削除される)
kubectl delete job <job名>コストが跳ね上がりそうなので、止めていたk8sを動かすときは注意する。
事前抑止
k8sに関して。
cronjobが含まれるk8sを久しぶりに起動したら、
cronjobに登録していたバッチが異常なほど大量に立ち上がり、
大量のpending状態のpodができた。これはstartingDeadlineSecondsがnilかつconcurrencyPolicyがallowであるため、
本来なら停止期間中に動いていたら起動していた分のバッチが一気に立ち上がったためか。
→あってるっぽい。
下記の設定を見直す。
- startingDeadlineSeconds
- このフィールドが設定されていると、前回のスケジュールからこの秒数が経過した古いスケジュールを無視する。
- デフォルトは設定なし(nil)。つまり、理論上は古いスケジュールを無制限に遡って実行しようとする可能性がある。
- concurrencyPolicy
- これは、前回の実行がまだ終わっていない場合に次の実行をどうするかを制御する。
- デフォルトはAllow(同時に実行を許可)。
参考リンク
暗号化
環境変数には暗号化した値を格納する。
k8sの公開鍵で暗号化できるらしい。