반응형
1. cronjob이란
리눅스 crontab(작업 예약 스케줄러) 쿠버네티스 버전입니다.
백업, 소나큐브 분석, 이메일 전송 등 정기적이고 반복적인 작업을 하는데 쓰입니다.
2. 사용법
(1). mycj.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: time-limited-cronjob
spec:
jobTemplate:
metadata:
name: my-time-limited-job
spec:
activeDeadlineSeconds: 150 # 150초만 실행하고 끝내는 예제
template:
spec:
containers:
- args:
- /bin/sh
- -c
- date; echo Hello CronJob
image: busybox
name: time-limited-job
restartPolicy: Never
schedule: '* * * * *'
yaml파일을 정의합니다.
schedule에 있는 * * * * *는 우리가 알고있는 리눅스 crontab 방식으로 사용하면 됩니다.
저는 현재시간과, Hello Cronjob을 출력해주는 이미지를 사용하겠습니다.
(2). 실행 및 결과확인
cronjob을 만들어줍니다.
$ kubectl apply -f mycj.yaml
cronjob.batch/time-limited-cronjob created
cronjob 확인
$ kubectl get cj
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
time-limited-cronjob * * * * * False 0 49s 15m
크론잡은 deployment - replicaset - pod 과 비슷한 특성이 있습니다.
cronjob은 job을 만들고 job은 pod을 생성합니다.(이름과 해시로 확인)
cronjob은 1분에 한번씩 job을 생성하고(* * * * * 이므로 1분에 한번씩) job은 pod을 생성하게 됩니다.
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/time-limited-cronjob-27144410-sgzzx 0/1 Completed 0 2m29s
pod/time-limited-cronjob-27144411-w4pl7 0/1 Completed 0 89s
pod/time-limited-cronjob-27144412-c9qqf 0/1 Completed 0 29s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 15m
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
cronjob.batch/time-limited-cronjob * * * * * False 0 29s 14m
NAME COMPLETIONS DURATION AGE
job.batch/time-limited-cronjob-27144410 1/1 3s 2m29s
job.batch/time-limited-cronjob-27144411 1/1 4s 89s
job.batch/time-limited-cronjob-27144412 1/1 3s 29s
pod의 로그를 찍어 정상적으로 job이 실행된것을 확인할 수 있습니다.
$ kubectl logs time-limited-cronjob-27144412-c9qqf
Wed Aug 11 06:52:03 UTC 2021
Hello CronJob
반응형
'kubernetes' 카테고리의 다른 글
[kubernetes] 쿠버네티스 cr과 crd란?(쿠버네티스 확장) (4) | 2021.07.14 |
---|---|
[kubernetes] 쿠버네티스 인증, 인가(rbac) (0) | 2021.07.14 |
[kubernetes] 쿠버네티스(kubernetes) service(NodePort)란 (0) | 2021.07.14 |
[kubernetes] 쿠버네티스(kubernetes) service(clusterip)란 (0) | 2021.06.22 |
[kubernetes] 쿠버네티스(kubernetes) 디플로이먼트(deployment)란 (0) | 2021.06.21 |
댓글