본문 바로가기
클라우드/Kubernetes

[Kubernetes] CronJob 예제, Completed, Failed 파드 관리하기

by 정권이 내 2023. 6. 14.

[Kubernetes] CronJob 예제, Completed, Failed 파드 관리하기

 

쿠버네티스에서 CronJob은 주기적으로 실행되는 작업을 정의한 리소스입니다. 리눅스에서 crontab을 생성하듯이 5자리의 Cron 표현식으로 주기를 설정할수 있습니다.

 

CronJob 생성

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: my-cronjob
spec:
  schedule: "0 1 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: my-job
            image: my-image
            command: ["my-command"]

위의 예제에서 Cron 표현식으로 "0 1 * * *"을 사용했는데 왼쪽부터 순서대로 아래와 같은 의미입니다.

  • 분(0-59)
  • 시간(0-23)
  • 일(1-31)
  • 월(1-12)
  • 요일(0-7, 0과 7은 일요일)

즉, 위의 예제에서는 일, 월, 요일은 특정되지 않았으므로 매일 실행되며 매일 01시 00분에 작업이 실행되는것을 뜻합니다.

 

Cron 표현식 예제

cron 표현식의미
* * * * *매 분마다 실행
*/30 * * * *매 30분마다 실행
0 * * * *매 시간 정각에 실행
0 9 * * *매일 오전 9시에 실행
0 10 * * 1-5매주 월~금요일 오전 10시에 실행
0 4 1 * *매달 1일 오전 4시에 실행
0 8 1,15 1-6 *1~6월 이면서 1일~15일 오전 8시에 실행
0 15 * * 6,0매주 토,일요일 15시에 실행
30 9 1 7 *매년 7월 1일 오전 9:30에 실행

 

CronJob 이력 관리

CronJob이 작업을 수행하면 작업을 정상적으로 수행했는지 여부에 따라서 Completed, Failed 상태로 작업이력을 남기게 되는데 CronJob 생성시 spec.successfulJobsHistoryLimit, sepc.failedJobsHistoryLimit 옵션으로 갯수를 지정할수 있습니다.

만약 둘다 0으로 설정한다면 작업수행 성공, 실패여부에 관계없이 이력을 남기지 않습니다.

 

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: my-cronjob
spec:
  schedule: "0 1 * * *"
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 5
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: my-job
            image: my-image
            command: ["my-command"]

위 예제에서는 성공이력은 3개, 실패이력은 5개를 남기도록 하였습니다. 하지만 특별한 목적때문에 이력을 남기는것이 아니라면 successfulJobsHistoryLimit 값은 0으로 하고 failedJobsHistoryLimit은 1로 하여 리소스를 절약하고 실패하는 경우에 대해서만 확인할수 있도록 하는것이 좋습니다.

 

 

반응형

댓글