K8S Job
Job은 1회성 작업을 할때 사용한다.
1. 추가 설명
작업이 끝나도 Job과 Pod가 자동으로 삭제되지 않는다. 그래서 Job의 log를 확인할 수 있다
Job은 Contoller이기 때문에 node가 down되는 경우 새로운 node에 job을 recreate하지만, restart는 하지 않는다.
2. 생성 Example #1
apiVersion: batch/v1
kind: Job
metadata:
name: job-1
spec:
template:
spec:
restartPolicy: Never
containers:
- name: container
image: kubetm/init
command: ["sh", "-c", "echo 'job start';sleep 20; echo 'job end'"]
terminationGracePeriodSeconds: 0
3. Job 삭제
$ kubectl delete -n default job job-1
4. 생성 Example #2
apiVersion: batch/v1
kind: Job
metadata:
name: job-2
spec:
completions: 6
parallelism: 2
activeDeadlineSeconds: 30
template:
spec:
restartPolicy: Never
containers:
- name: container
image: kubetm/init
command: ["sh", "-c", "echo 'job start';sleep 20; echo 'job end'"]
terminationGracePeriodSeconds: 0
-
completions : Job이 완료되기 위해 실행되어야 할 전체 pods 수
- parallelism : 한번에 실행될 pods 수. default는 1
- activeDeadlineSeconds : 해당 시간내에 전체 pods의 실행이 완료되지 않으면 강제로 pods를 삭제한다. (Hang걸리는 경우 를 대비하기 위한 강제종료 시간)