YOGAE

TODO: FIXME:

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