Job
- 단발성으로 연산, 데이터 처리 등을 이유로 자원을 써야하는 경우도 있음
- 이러한 작업을 Pod로 구현한다면, Pod는 중료 후 재생성 되는 사이클을 반복함
restartPolicy: Always
가 디폴트이기 때문에 사용자가 삭제하지 않는 한 Pod 는 실행 상태를 유지하는 것이 K8s 의 특성restartPolicy: Never
로 설정하면 한번 실행하고 종료가 되긴 함.
만일 다수의 파드를 생성하고 배치로 스케쥴링 및 관리하고 싶다면 Job 오브젝트를 사용하면 됨. 싶다면?
Job 정의
apiVersion: batch/v1 # 버전 주의
kind: Job
metadata:
name: my-job
spec:
template:
spec:
cotainers:
- name: math-add
image: ubuntu
command: ['expr', '3', '+', '2']
restartPolicy: Never
completions: 3
parallelism: 3
completion
- Job을 반복하고자 하는 횟수
- 파드가 한개씩 생성되며 Job을 실행함.
- 반복 중 에러가 발생하면 또 다른 파드를 생성해 다시 시도함. 횟수를 채울 때까지 반복됨
parallelism
- 병렬로 실행하고자 하는 파드의 수. completion의 수 내로 설정.
예를 들어 completion=3, parrelism=3
일 경우 파드 3개가 동시에 실행되어 Job을 수행함. 만일 3개 중 2개 완료, 1개 에러일 경우 다시 파드 1개를 생성해서 Job을 실행함. completion 횟수를 채울 때까지 작업 반복.
Job 관련 명령어
kubectl get jobs
kubectl logs <pod-name>
- Job의 output 조회하기kubectl delete jobs <job-name>
- Job에 사용된 파드도 함께 삭제됨
CronJob
Job을 주기적으로 실행하고 싶을 때 사용하는 오브젝트
apiVersion: batch/v1betav1 # 버전 주의
kind: CronJob
metadata:
name: my-cron-job
spec:
schedule: "*/ * * * *" # 크론 주기 표기함.
jobTemplate:
# Job 생성 때 사용했던 내용 그대로 기입.
spec:
template:
spec:
cotainers:
- name: math-add
image: ubuntu
command: ['expr', '3', '+', '2']
restartPolicy: Never
completions: 3
parallelism: 3