cronjob 사용
주기마다 job 생성 -> pod 생성
# 주기
spec.schedule: "*/1 * * * *" -> 1분단위
...
배치마다 설정된 주기를 제대로 입력
# Timezone 설정
spec.timezone: "Asia/Seoul"
배치는 지정 시간마다 동작함
배치 설계시 어떤 시간을 기준으로 했는지에 따라 timezone 설정을 진행해줘야함
사용하는 시스템의 기본 timezone이 UTC인지 KST인지 잘 확인하여 동일하게 설정해줘야 제대로 동작 가능
기본 UTC
# 중복 실행 방지
spec.concurrencyPolicy: "Forbid"
1분주기로 실행시켜야하는 배치가 있을 때
배치 실행 시간이 1분이상 걸리는 경우 발생 -> conflict 발생
concurrencyPolicy옵션으로 중복 실행 방지
# 배치 즉시 실행 방지
suspend : true
새로운 배포 실행시 confilct 방지 위해 batch 관련 job pause 필요
suspend 옵션 사용하여 임시 pause : 동작하던 job까지만 완료되고 새로운 job 실행X
true -> 배포는 하되 job 바로 실행 방지 = 일종의 Pause
false -> 배포하자마자 스케줄에 맞춰 바로 실행
# 히스토리 설정
spec.successfulJobHistoryLimit : 15
spec.failedJobhistoryLimit: 10
운영자 입장에서는 배치 동작의 성공 실패 유무를 알아야 하므로 각 배치의 job history를 archiving 할 필요가 있음
실패했다면 로그를 확인하여 조치를 취해야하기 때문 (k logs 명령어로 로그 확인 가능)
하지만 너무 많도록 설정해두면 kubectl 작업시 터미널이 너무 복잡함
실행 주기를 고려하여 적당한 히스토리 저장값을 설정하는 것이 필요
JOONU's Engineer Blog