본문 바로가기
kubernetes

[kubernetes] 쿠버네티스(kubernetes) cronjob 이란

by devjh 2021. 7. 14.
반응형

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

 

반응형

댓글