Kubernetes

job

라온클 2023. 1. 22. 22:52


<한줄 요약>
job은 컨테이너를 사용하여 한번만 실행되는 리소스다.

<세줄 요약>

  • job은 기동중인 Pod가 정지되는 것을 전제로 만들어졌다.(레플리카셋 등 다른 리소스들은 running을 전제로 만들어졌다)
  • 일회성 배치 처리 작업에 유용하다(예시 : S3같은 오브젝트 스토리지에 파일 업로드, 머신러닝 학습 등)
  • job은 Pod의 정지가 정상 종료되는 작업에 적합하다



<특징>

  • completions : 성공 횟수 지정. 기본값 1. 변경 불가.
  • parallelism : 병렬성 지정. 기본값 1. 변경 불가.
  • backoffLimit : 성공할 때까지 재시도(실패 허용) 횟수. 변경 불가.
  • backoffLimit 횟수가 2일 경우 : 총 3번 실행(첫 시도 + 2번 재시도)
  • backoffLimit 횟수를 1개 이상 설정할 경우 Job의 연산이 멱등성을 가졌는지 확인(=연산을 여러 번 적용하더라도 결과가 달라지지 않는지)
  • ttl.SecondsAfterFinished : 잡 종료 후 일정 기간(초) 경과 후 삭제 하도록



<장단점(한계)>
장점 : 1회성 batch작업에 좋다
단점 : 주기적으로 반복되는 작업할 땐 불편하다


<존재 이유>
1회성 batch작업에 좋다

<만드는 법>
1)yaml 매니패스토
https://kubernetes.io/docs/concepts/workloads/controllers/job/ 2)kubectl create job 명령어 : 간단한 것만 생성 가능
kubectl create job {잡 이름} --image={이미지 이름} -- {명령어}


<흐름 속 의미>
initContainer가 Pod 단위로 기동 단계 초반에 1회성 작업을 한다면,
Job은 워크로드 중간에 1회성으로 batch 작업을 한다