kubectl get으로 잡을 확인해보면 레플리카셋 등에서는 READY 상태의 컨테이너 수를 표시하지만, 잡에서는 정상 종료한 파드 수(COMPLETIONS)를 표시한다.apiVersion: batch/v1
kind: Job
metadata:
name: sample-job
spec:
completions: 1
parallelism: 1
backoffLimit: 10
template:
spec:
containers:
- name: tools-container
image: amsy810/tools:v2.0
command: ["sleep"]
args: ["60"]
restartPolicy: Never
spec.template.spec.restartPolicy에 Onfailure 또는 Never 중 하나를 지정해야 한다.
Never : 파드에 장애가 발생하면 신규 파드가 생성된다.
apiVersion: batch/v1
kind: Job
metadata:
name: sample-job-never-restart
spec:
completions: 1
parallelism: 1
backoffLimit: 10
template:
spec:
containers:
- name: tools-container
image: amsy810/tools:v2.0
command: ["sh", "-c"]
args: ["$(sleep 3600)"]
restartPolicy: Never
OnFailure : 동일한 파드를 사용하여 잡을 다시 시작한다.
apiVersion: batch/v1
kind: Job
metadata:
name: sample-job-onfailure-restart
spec:
completions: 1
parallelism: 1
backoffLimit: 10
template:
spec:
containers:
- name: tools-container
image: amsy810/tools:v2.0
command: ["sh", "-c"]
args: ["$(sleep 3600)"]
restartPolicy: OnFailure
completions/parallelism/backoffLimit는 아주 중요한 파라미터들이며 잡의 워크로드에 따라 적절히 설정하여 사용해야 한다.
completions : 목표 성공 치
parallelism : 병렬 처리 횟수backoffLimit : 실패 허용 횟수1회만 실행하는 태스크 (One Shot Task)
completions : 1parallelism : 1backoffLimit : 0N개 병렬로 실행시키는 태스크 (Multi Task)
parallelism)를 성공 횟수(completions) 이상으로 설정하더라도 성공 횟수만큼만 파드가 생성된다.completions : Nparallelism : MbackoffLimit : P한 개씩 실행하는 작업 큐 (Single WorkQueue)
<aside>
💡 실행 중 parallelism을 변경하여 N개의 Multi WorkQueue로 변경할 수 있다.
Parallelism 변경은 kubectl patch 명령어를 사용하거나 매니페스트를 적용하여 변경할 수 있다.
</aside>
completions : 미지정parallelism : 1backoffLimit : PN개 병렬로 실행하는 작업 큐 (Multi WorkQueue)
<aside> 💡 [ 동작원리 ]
completions에 도달할 때까지 실행하는 것이 아닌, 큰 처리 전체가 정상 종료할 때까지 병렬 수로 계속 실행하고자 할 때 사용</aside>
<aside> 💡 - 작업 큐의 잡을 사용하려면 처리 전체의 진행을 관리하기 위한 메시지 큐를 사용해야 한다.
</aside>
completions : 미지정parallelism : NbackoffLimit : PapiVersion: batch/v1
kind: Job
metadata:
name: sample-multi-workqueue-job
spec:
# completions: 1 지정하지 않는다.
parallelism: 3
backoffLimit: 1
template:
spec:
containers:
- name: tools-container
image: amsy810/tools:v2.0
command: ["sleep"]
args: ["30"]
restartPolicy: Never
completions: 5, parallelism: 3 ⇒ COMPLETIONS 3/5 로 표기parallelism: 3 ⇒ COMPLETIONS 0/1 of 3
0/1 of 3로 나타난다.spec.ttlSecondsAfterFinished를 설정하여 잡이 종료한 후에 일정 기간 경과 후 삭제하도록 설정 가능apiVersion: batch/v1
kind: Job
metadata:
name: sample-job-ttl
spec:
ttlSecondsAfterFinished: 30
completions: 1
parallelism: 1
backoffLimit: 10
template:
spec:
containers:
- name: tools-container
image: amsy810/tools:v2.0
command: ["sleep"]
args: ["60"]
restartPolicy: Never