[쿠버네티스 인 액션] 4장. 레플리케이션과 그 밖의 컨트롤러 - 잡, 크론잡
4.5 잡
- 작업을 완료한 후에 종료되는 테스크 일 경우 사용
- 파드의 컨테이너 내부에서 실행 중인 프로세스가 성공적으로 완료되면 컨테이너를 다시 시작하지 않는 파드 실행할 수 있음.
- 장애가 발생한 경우 잡에서 컨테이너 다시 시작할 것인지 설정할 수 있음.
kubernetes-in-action/Chapter04/batch-job.yaml at master · luksa/kubernetes-in-action (github.com)
apiVersion: batch/v1
kind: Job
metadata:
name: batch-job
spec:
template:
metadata:
labels:
app: batch-job
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
apiVersion : batch/v1, kind: Job 으로 생성
restartPolicy : Onfailure 혹은 Never로 명시적으로 설정해야함.
apiVersion: batch/v1
kind: Job
metadata:
name: multi-completion-batch-job
spec:
completions: 5
template:
metadata:
labels:
app: batch-job
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
차례로 다섯 개의 파드를 실행하며, 처음에 파드 하나 만들고, 컨테이너 완료되면 두번째 파드 만들어 다섯 개의 파드가 성공적으로 완료될 때까지 과정 계속함.
apiVersion: batch/v1
kind: Job
metadata:
name: multi-completion-batch-job
spec:
completions: 5
parallelism: 2
template:
metadata:
labels:
app: batch-job
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
병렬로 수행될 수 있게 parallelism 속성 줄 수 있음.
4.6 크론잡
일정 시간 또는 지정된 가격으로 반복 실행
kubernetes-in-action/Chapter04/cronjob.yaml at master · luksa/kubernetes-in-action (github.com)
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: batch-job-every-fifteen-minutes
spec:
schedule: "0,15,30,45 * * * *"
jobTemplate:
spec:
template:
metadata:
labels:
app: periodic-batch-job
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
일반적인 상황에서 잡이 크론잡은 스케줄에 설정한 각 실행에 항상 하나의 잡만 생성하지만,
- 두 개의 잡이 동시에 생성될 수 있거나 => 멱등성이 있어야함 (여러번 실행해도 원치 않는 결과 나오지 않게함)
- 전혀 생성되지 않을 수 있다. => 다음 번 잡이 이전의 실행에서 완료됐어야 하는 작업 수행하는지 확인해야함