kubernetes 잡 리소스
26 Apr 2019
- 실행 중인 프로세스가 성공적으로 완료되면 컨테이너가 다시 시작되지 않습니다.(레플리카셋 및 데몬셋은 작업의 완료를 고려하지 않고 계속적으로 태스크를 실행)
- 노드 장애가 발생하면 잡이 관리하는 해당 노드의 포드는 다른 노드로 재스케줄됩니다.
잡 리소스 생성
# export.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: batch-job
spec:
template:
metadata:
labels:
app: batch-job
spec:
restartPolicy: OnFailure # default alway
containers:
- name: main
image: luksa/batch-job
kubectl create -f export.yaml
여러 포드 실행
apiVersion: batch/v1
kind: Job
metadata:
name: multi-batch-job
spec:
completions: 5 # 5개의 포드를 성곡적으로 완료할 때까지 실행
parallelism: 2 # 최대 두개의 포드를 병렬로 실행
activeDeadlineSeconds: 100 # 100초 동안 실행하고 넘어가면 실패
kubectl scale job multi-batch-job --replicas 3 # 실행중인 job의 병렬 처리 크기를 증가시킴
CronJob 생성
특정 시간에 실행되거나 지정된 간격으로 반복적으로 실행이 필요한 경우
apiVersion: batch/v1
kind: CronJob
metadata:
name: batch-cron-job
spec:
schedule: "0,15,30,45 * * * *" # 매일 매시간 0, 15, 30, 45분에 실행
jobTemplate:
spec:
template:
metadata:
labels:
app: periodic-batch-job
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
잡 리소스 확인
kubectl get jobs
kubectl get po
kubectl get po -a # job이 완료된 이후 job을 실행한 pod를 확인
# Flag --show-all has been deprecated, will be removed in an upcoming release