작업을 완료한 후에는, 종료되는 서비스가 있을 수 있다. 쿠버네티스는 '잡' 이라는 리소스로 해당 기능을 지원한다.
잡을 통해, 파드 내부 프로세스가 완료되면 해당 파드를 완료 시킬 수 있다. 물론 완료에 실패하면 이후처리를 결정 할 수 있다. 때문에 잡은 제대로 완료되는 것이 중요한 작업에 매우 유용하다.
이러한 작업의 좋은 예는 배치 작업이 있다.
apiVersion: batch/v1
kind: Job
metadata:
name: batch-example
spec:
template:
metadata:
labels:
app: batch-example
spec:
restartPolicy: OnFailure
containers:
- name: main
image: 배치를 실행할 이미지
kubectl get jobs // job의 목록을 볼 수 있다.
잡을 직렬 혹은 병렬로 배치해 실행 시킬 수도 있다.
apiVersion: batch/v1
kind: Job
metadata:
name: batch-example
spec:
completions: 5
...
completions 옵션을 설정하면 차례대로 5개의 파드를 실행한다.
apiVersion: batch/v1
kind: Job
metadata:
name: batch-example
spec:
completions: 5
parallelism: 2
...
parallelism 옵션을 설정하면 잡은 파드를 해당 갯수만큼 생성하고 병렬로 실행한다.
물론 실행되는 동안 스케일링 할 수 있다.
kubectl scale job batch-example --replicas 3
배치가 특정 시간 이상으로 돌아가는 경우, 실패로 간주하여 끝내야 하는 경우도 있다. activeDeadlineSeconds 속성을 설정하면 파드의 실행 시간을 정할 수 있다. 물론 실패한 경우 재시도 횟수도 지정할 수 있는데 backoffLimit 속성을 사용하면 된다.
크론잡
사전에 설정된 특정 시간과 주기에 실행해야 하는 작업도 설정 가능하다.
apiVersion: batch/v1
kind: Job
metadata:
name: batch-example
spec:
schedule: "0,15,30,45 * * * *"
jobTemplate:
spec:
template:
metadata:
labels:
app: batch-example
spec:
restartPolicy: OnFailure
containers:
- name: main
image: 배치를 실행할 이미지
이미 크론잡에 경험이 있는 사람은 알겠지만 분, 시, 일, 월, 요일 순으로 설정이 가능하며 위처럼 설정하면 15분마다 실행되게 된다.
다음시간에는 서비스에 대해 깊이 있게 알아보자.
'개발 이야기 > 쿠버네티스' 카테고리의 다른 글
쿠버네티스 명령어 (0) | 2022.01.25 |
---|---|
쿠버네티스 - 레플리카셋 - 18 (0) | 2021.09.28 |
쿠버네티스 - 레플리케이션컨트롤러 - 17 (0) | 2021.09.22 |
쿠버네티스 - 프로브 - 16 (2) | 2021.09.08 |
쿠버네티스 - 파드 중지/삭제 - 15 (0) | 2021.09.06 |