크론잡 생성
- ‘1분마다 50% 확률로 성공하는 한 번만 실행되는 잡’을 생성하는 크론잡
spec.schedule
을 통해 Cron과 같은 형식으로 시간 지정 가능
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: sample-cronjob
spec:
schedule: "*/1 * * * *"
concurrencyPolicy: Allow
startingDeadlineSeconds: 30
successfulJobsHistoryLimit: 5
failedJobsHistoryLimit: 3
suspend: false
jobTemplate:
spec:
completions: 1
parallelism: 1
backoffLimit: 0
template:
spec:
containers:
- name: tools-container
image: amsy810/random-exit:v2.0
restartPolicy: Never
크론잡 일시 정지
- 크론잡은 지정한 시간에 잡을 계속 생성하기 때문에 점검이나 특정 이유로 잡 생성을 원하지 않을 경우에는 suspend(일시 정지)를 할 수 있다.
spec.suspend
가 true
로 설정되어 있으면 스케줄 대상에서 제외된다(기본값을 false).
kubectl patch cronjob sample-cronjob -p '{"spec":{"suspend":true}}'
크론잡을 임의의 시점에 실행
- 정기적 실행 이외의 시점에 잡을 생성할 수 있다.
--from
옵션을 사용하여 크론잡으로 잡을 생성할 수 있다.
kubectl create job sample-job-from-cronjob --from cronjob/sample-cronjob
동시 실행 제어
- 크론잡에서는 잡을 생성하는 특성상 동시 실행에 대한 정책을 설정할 수 있다.
- 잡 실행이 의도한 시간 간격 안에서 정상 종료 할 때는 명시적으로 지정하지 않아도 동시 실행되지 않고 새로운 잡을 실행한다.
- 동시 실행에 대한 정책은
spec.concurrencyPolicy
에 지정한다.
- Allow(기본값) : 동시 실행에 대한 제한을 하지 않음
- Forbid : 이전 잡이 종료되지 않았을 경우 다음 잡은 실행하지 않음(동시 실행하지 않음)
- Replace : 이전 잡을 취소하고 잡을 시작
- 이전 잡의 레플리카 수를 0으로 변경하여 이전 잡에 연결된 파드를 삭제 처리
실행 시작 기한 제어
- 크론잡은 지정한 시간이 되면 쿠버네티스 마스터가 잡을 생성한다.
- 쿠버네티스 마스터가 일시적으로 정지되는 경우 등과 같이 시작 시간이 지연되면, 그 지연 시간을 허용하는 시간(초,
spec.startingDeadlineSeconds
)를 지정할 수 있다.
- 매시 00분에 시작하는 잡을 ‘매시 00~05분에만 실행 가능’으로 설정할 경우 300초로 설정
- 기본값은 시작 시간이 아무리 늦어져도 잡을 생성하게 되어있다.
크론잡 이력
- 저장할 잡 개수를 지정할 수 있다.
spec.successfulJobsHistoryLimit
와 spec.failedJobsHistoryLimit
가 있다.
spec.successfulJobsHistoryLimit
: 성공한 잡을 저장하는 개수
spec.failedJobsHistoryLimit
: 실패한 잡을 저장하는 개수
- 이 설정값을 통해 크론잡이 생성할 잡을 몇 개 유지할지를 지정한다.