Search

CronJob

CronJob은 주기적으로 특정 동작을 수행하고 종료하는 작업(배치 작업)을 정의하기 위한 리소스이다.
리눅스 크론(Cron) 스케쥴링 방법을 그대로 사용한다.
내부적으로 Job을 생성하여 작업을 수행한다. (그리고 Job은 내부적으로 Pod를 만든다.)
주기적으로 데이터를 백업하거나 데이터 점검 및 알림 전송 등의 목적으로 사용한다.
cronjob.yaml
apiVersion: batch/v1 kind: CronJob metadata: name: hello-every-minute spec: schedule: "*/1 * * * *" successfulJobsHistoryLimit: 5 jobTemplate: spec: template: spec: restartPolicy: Never containers: - name: hello image: ubuntu:focal command: ["sh", "-c", "echo Hello $(date)!"]
Shell
복사
jobTemplate이 template을 감싸고 있음을 알 수 있다. CronJob은 바로 Pod를 감쌀 수 없다는 것이다. 즉, CronJob은 Job을 감싸야하고 Job이 Pod를 감싸는 형태여야한다.
Deployment가 ReplicasSet을 wrapping하고 ReplicaSet이 Pod를 wrapping하는 것처럼, CronJob이 Job을 wrapping하고 Job이 Pod를 wrapping하는 방식을 비슷한 원리로 볼 수 있다.
schedule은 cron 표현식이 들어가게 된다. "/1 * *" 는 매 1분마다 CronJob을 실행시키라는 의미이다.
successfulJobsHistoryLimit 옵션도 주었는데, 성공한 Job 기록을 최대 5개 남기라는 의미이다.