Job은 특정 개수의 포드가 성공적으로 완료되는 것을 보장하며, 실행한 포드가 실패, 하드웨어 장애 발생, 노드 재부팅 등과 같은 문제 발생 시 자동으로 포드를 재실행한다. 주로 실행 후 종료되어야 하는 작업을 실행시킬 때 사용한다.
이 글에서는 job을 생성, 삭제, 수정 및 정보를 확인하는 방법에 대해 정리한다.
Job 생성
create 명령을 이용해 Job을 생성한다.
kubectl create job <NAME> --image=<IMAGE_NAME>
# 예시
kubectl create job throw-dice-job --image=kodekloud/throw-dice
Job 목록 확인
Job의 이름, 완료 여부 등을 확인할 수 있다.
kubectl get jobs.batch
Job 상세 정보 확인
포드를 완료할 때까지 포드를 재실행한 횟수 등의 정보를 확인할 수 있다.
kubectl describe jobs.batch <NAME>
# 예시
kubectl describe jobs.batch throw-dice-job
Job 수정 - 완료 횟수 지정
edit 명령으로 수정할 수 없으므로 job 삭제 후 재생성이 필요하다.
yaml 파일의 .spec.completions 필드를 추가 또는 수정한다.
apiVersion: batch/v1
kind: Job
metadata:
creationTimestamp: null
name: throw-dice-job
spec:
completions: 3
template:
metadata:
creationTimestamp: null
spec:
containers:
- image: kodekloud/throw-dice
name: throw-dice-job
resources: {}
restartPolicy: Never
status: {}
Job 수정 - 병렬 실행
yaml 파일의 .spec.parallelism 필드를 추가 또는 수정한다.
apiVersion: batch/v1
kind: Job
metadata:
creationTimestamp: null
name: throw-dice-job
spec:
completions: 3
parallelism: 3
template:
metadata:
creationTimestamp: null
spec:
containers:
- image: kodekloud/throw-dice
name: throw-dice-job
resources: {}
restartPolicy: Never
status: {}
Job 삭제
delete 명령으로 삭제한다.
kubectl delete jobs.batch <NAME>
# 예시
kubectl delete jobs.batch throw-dice-job
CronJob 생성
create cronjob 명령으로 생성할 수 있다.
kubectl create cronjob NAME --image=image --schedule='0/5 * * * ?' -- [COMMAND] [args...]
# 예시
kubectl create cronjob throw-dice-cron-job --image=kodekloud/throw-dice --schedule='30 21 * * *'
참고 문서
https://kubernetes.io/ko/docs/concepts/workloads/controllers/job/
https://kubernetes.io/ko/docs/concepts/workloads/controllers/cron-jobs/