Job
1 Job
- 레퍼런스
- 쿠버네티스에서 일회성 작업을 처리하는 가장 효율적인 방법은 '잡(Job)'을 사용하는 것입니다.
- 잡은 한 번 실행되고 종료되는 태스크를 위해 설계된 쿠버네티스 리소스로, 배치 처리, 데이터 마이그레이션, 백업과 같은 작업에 적합합니다.
1.1 Job의 특징
- 일회성 작업: 잡은 지정된 작업을 수행한 후 종료되는 파드(Pod)를 생성합니다.
- 재시도 메커니즘: 실패한 작업의 경우, 잡은 설정에 따라 작업을 재시도할 수 있습니다.
- 병렬 실행 지원: 여러 파드를 동시에 실행하여 작업을 병렬로 처리할 수 있습니다.
1.2 Job 리소스 정의
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
kubectl apply -f https://kubernetes.io/examples/controllers/job.yaml
Name: pi
Namespace: default
Selector: batch.kubernetes.io/controller-uid=c9948307-e56d-4b5d-8302-ae2d7b7da67c
Labels: batch.kubernetes.io/controller-uid=c9948307-e56d-4b5d-8302-ae2d7b7da67c
batch.kubernetes.io/job-name=pi
...
Annotations: batch.kubernetes.io/job-tracking: ""
Parallelism: 1
Completions: 1
Start Time: Mon, 02 Dec 2019 15:20:11 +0200
Completed At: Mon, 02 Dec 2019 15:21:16 +0200
Duration: 65s
Pods Statuses: 0 Running / 1 Succeeded / 0 Failed
Pod Template:
Labels: batch.kubernetes.io/controller-uid=c9948307-e56d-4b5d-8302-ae2d7b7da67c
batch.kubernetes.io/job-name=pi
Containers:
pi:
Image: perl:5.34.0
Port: <none>
Host Port: <none>
Command:
perl
-Mbignum=bpi
-wle
print bpi(2000)
Environment: <none>
Mounts: <none>
Volumes: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 21s job-controller Created pod: pi-xf9p4
Normal Completed 18s job-controller Job completed
2 여러 파드 실행
- 잡은 두개 이상의 파드 인스턴스를 생성해 병렬 또는 순차적으로 실행할 수 있다.
spec.completions,spec.parallelism설정을 통해 조절할 수 있다.