시간 차원을 추가하고 작업 단위 실행이 시간적 이벤트에 의해 트리거 되도록 하여 배치 잡을 확장합니다.
주기적 잡은 보통 시스템 유지 보수나 관리 작업을 자동화하기 위해 사용됩니다. 또한 주기적으로 실행되어야 하는 특정한 작업을 요구샇는 비즈니스 애플리케이션과 관련이 있습니다.
ex) 파일 전송을 통한 B2B, Db 조회를 통한 애플리케이션 통합 등
시스템 유지보수 목적을 위해 주기적 잡을 관리하는 전통적인 방식은 Cron
혹은 특화된 스케줄링 소프트웨어를 사용하는 것입니다. 하지만 특화된 소프트웨어는 간단한 사용 예에 활용하기에는 비용이 많이 들며 단일 서버에서 실행되는 크론 잡은 관리하기가 어렵고 단일 장애지점(Single point of failure)이 될수도 있습니다.
쿠버네티스 크론잡 구현은 잘 알려진 크론 형식을 이용한 잡 자원 스케줄을 허용하며 개발자들이 시간적 스케줄링 측변보다는 수행될 작업을 구현하는데에 집줍하게 함으로써 여러가지 문제를 해결할 수 있습니다.
크론잡은 잡 위에서 빌드되기 때문에 배치 잡에 적용이 됩니다. 크론잡 인스턴스는 유닉스 크론탭의 1개 행과 유사하며, 잡의 시간적 측면을 관리합니다. 또한 지정된 시간에 주기적으로 잡을 수행하는 것이 가능합니다.
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: random-generator
sepc:
schedule: "*/3 * * * *" # 3분마다 실행하는 크론 정의
jobTemplate:
spec:
template: # 일반 잡과 동일한 정의를 사용하는 잡 템플릿
spec:
containers:
- image: k8spatterns/random/generator:1.0
name: random-genrator
command: ["java","-cp","/","RandomRunner","/number.txt","10000"]
restartPolicy: OnFailure
시간적 측면을 정의하기 위한 추가 필드
.spec.schedule
.spec.startngDeadlineSeconds
.spec.concurrencyPolicy
.spec.suspend
.spec.successfulJobHistoryLimit
와 .spec.failedJobsHistoryLimit