Kubernetes

Job

라온클 2023. 6. 4. 05:30

<한줄 요약>

"Job 리소스는 일반 Pod처럼 항상 실행되고 있는 서비스 프로세스가 아닌 한번 실행되고 완료가 되는 일괄처리 프로세스용으로 만들어졌습니다."
- 책 <핵심만 콕! 쿠버네티스> 194p

 

<그림으로 보는 Job manifest파일>

간단 ver.

 

 

상세 ver.

 

 


<특징>

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

 

시작하세요! 도커/쿠버네티스 

http://www.yes24.com/Product/Goods/84927385