<한줄 요약>
"Job 리소스는 일반 Pod처럼 항상 실행되고 있는 서비스 프로세스가 아닌 한번 실행되고 완료가 되는 일괄처리 프로세스용으로 만들어졌습니다."
- 책 <핵심만 콕! 쿠버네티스> 194p
<그림으로 보는 Job manifest파일>
<특징>
Deployemt처럼 Pod를 생성해서 원하는 작업을 수행하는 건 같으나, 작업이 끝나면 Job은 Completions로 Pod는 Status 가 Completed로 남는다.
Deployment | Job | |
공통점 | Pod를 생성하여 원하는 작업을 수행한다 | |
목적 | Running한 상태의 Pod 개수를 유지하는 것 | 작업 후 Pod가 종료되는 것 |
initContainer가 Pod 단위로 기동 단계 초반에 1회성 작업을 한다면, Job은 워크로드 중간에 1회성으로 batch 작업을 한다.
Job의 restartPolicy는 Never 혹은 OnFailure 만 가능하다.
Job의 Pod가 실패했는데, restartPolicy가 OnFailure일 경우, 재시작하기 때문에 Job이 처리하려는 작업이 멱등성을 띠는지 확인해야 한다.
completions :
- 성공 횟수 지정.
- 기본값 1.
- yaml 업데이트 불가.
parallelism :
- 병렬성 지정.
- 기본값 1.
- yaml 업데이트 불가.
- 병렬성에 대한 내용이지, 동시성을 엄격하게 보장하는 목적을 가지지 않는다.
backoffLimit :
- 성공할 때까지 재시도(실패 허용)할 수 있는 횟수를 지정한다.
- 기본값 6.
- backoffLimit 횟수가 2일 경우 : 총 3번 실행(첫 시도 + 2번 재시도)
- yaml 업데이트 불가.
<존재 이유 or 흐름 속 의미>
Job은 1회성 batch 작업에 유용하다(예시 : S3같은 오브젝트 스토리지에 파일 업로드, 머신러닝 학습 등)
<만드는 법>
1)yaml 매니패스토
https://kubernetes.io/docs/concepts/workloads/controllers/job/
2)kubectl create job 명령어 : 간단한 것만 생성 가능
kubectl create job {잡 이름} --image={이미지 이름} -- {명령어}
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#-em-job-em-
<참고 링크>
Job
https://kubernetes.io/docs/concepts/workloads/controllers/job
Job 사용 패턴
https://kubernetes.io/docs/concepts/workloads/controllers/job/#job-patterns
backofflimit
https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy
책 <핵심만 콕! 쿠버네티스>
http://www.yes24.com/Product/Goods/92426926
시작하세요! 도커/쿠버네티스
'Kubernetes' 카테고리의 다른 글
Audit Log Policy (0) | 2023.06.08 |
---|---|
securityContext (0) | 2023.06.06 |
initContainers (0) | 2023.05.24 |
CronJob (0) | 2023.05.24 |
KubeCon NA 2022 Vlog (0) | 2023.04.28 |