본문 바로가기
kubernetes

Kubernetes CronJob

by aws-evan 2024. 7. 5.
반응형

 

CronJob 이란

  • CronJob은 정해진 시간 간격에 따라 작업(Job)을 주기적으로 실행할 수 있도록 하는 Kubernetes 리소스입니다. 일반적인 예로는 데이터베이스 백업, 로그 정리, 주기적인 보고서 생성 등이 있습니다

CronJob의 구성 요소

 

 

구성 요소 설명
Schedule 작업 실행 주기를 설정하는 Cron 표현식
Job Template 실행할 작업의 템플릿을 정의
Concurrency Policy 작업의 동시 실행 정책 (Allow, Forbid, Replace)
Starting Deadline 작업이 시작될 수 있는 최대 지연 시간 (초 단위)

 

  • concurrencyPolicy 옵션
    • Allow: 이전 작업이 실행 중일 때 새로운 작업을 시작합니다.
    • Forbid: 이전 작업이 완료될 때까지 새로운 작업을 시작하지 않습니다.
    • Replace: 이전 작업이 실행 중이면 이전 작업을 중단하고 새로운 작업을 시작합니다.

 

예제

  • Kind : CronJob 사용
  • Schedule -> Job Template -> Concurrency Policy , Starting Deadline
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: no-concurrency-cronjob
spec:
  schedule: "0 * * * *"
  concurrencyPolicy: Forbid
  startingDeadlineSeconds: 60
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - echo "Hello, World!"
          restartPolicy: OnFailure

 

 

 

Schedule 문법

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
# │ │ │ │ │                                   OR sun, mon, tue, wed, thu, fri, sat
# │ │ │ │ │ 
# │ │ │ │ │
# * * * * *

 

 

 

  • Kubernetes 사용하게 되면 Pod내에서는 Cron을 사용하기엔 어려우니 CronJob을 통하여 작업 일정 예약하여 사용하시면 됩니다.

 

  • 참고 공식 문서

https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/

 

CronJob

A CronJob starts one-time Jobs on a repeating schedule.

kubernetes.io

 

반응형

'kubernetes' 카테고리의 다른 글

Kubernetes Containerd 데이터 경로 변경  (0) 2024.08.09
Kubernetes Containerd GPU 사용 방법  (0) 2024.08.09
Kubernetes Postgres DataBase Backup  (0) 2024.07.05
k3s 설치 가이드  (0) 2024.06.13
Kubernetes EFK Helm  (0) 2024.05.03