일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 쿠버네티스
- 코딩테스트
- mysql
- 데이터베이스
- 알고리즘
- 자바
- Python
- 리눅스
- docker
- DevOps
- Ai
- 인공지능
- Lv 2
- 깃
- 프로그래머스
- Kubernetes
- db
- 파이썬
- 머신러닝
- 코테
- 우분투
- Java
- programmers
- 자료구조
- github
- Linux
- 정처기
- ubuntu
- git
- LV 0
Archives
- Today
- Total
Myo-Kyeong Tech Blog
[Kubernetes] 쿠버네티스 CronJob으로 작업 스케줄링하기 본문
728x90
반응형
CronJob이란?
- 쿠버네티스에서 반복 작업을 정의하고 예약하는 기능
- 유닉스에서 사용되는 cron 데몬과 유사한 작동
- 특정 시간에, 또는 주기적으로 컨테이너화된 작업을 실행하도록 스케줄링
Cron 표현식 이해
- 크론 표현식은 분, 시간, 일, 월, 요일 등을 지정하여 작업을 예약하는 데 사용
# ┌───────────── 분 (0 - 59)
# │ ┌───────────── 시 (0 - 23)
# │ │ ┌───────────── 월의 일 (1 - 31)
# │ │ │ ┌───────────── 월 (1 - 12)
# │ │ │ │ ┌───────────── 요일 (0 - 6) (일요일부터 토요일까지)
# │ │ │ │ │ OR sun, mon, tue, wed, thu, fri, sat
# │ │ │ │ │
# │ │ │ │ │
# * * * * *
[크론 표현식]
* | 모든 값 |
1,2,3 | 특정 값들 |
1-5 | 범위 내의 값 |
*/2 | 간격으로 값 지정 |
다음과 같이 크론 표현식을 사용할 경우, 매주 월요일과 수요일 오후 3시에 작업이 실행됩니다.
0 15 * * 1,3
- 분 : 매 시간 0분
- 시 : 매일 오후 3시
- 일 : 상관없음
- 월 : 상관없음
- 요일: 매주 월요일과 수요일 (1은 월요일, 3은 수요일)
CronJob 매니페스트 작성
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox:1.28
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
CronJob 시간대 설정
한국 시간대로 설정하고 싶을 시에는 timeZone 필드에서 "Asia/Seoul"로 지정하면 됩니다.
spec:
schedule: "* * * * *"
timeZone: "Asia/Seoul"
CronJob 동시성 정책
쿠버네티스에서 CronJob을 생성할 때, '.spec.concurrencyPolicy' 필드를 통해 동시성 정책을 지정할 수 있습니다.
- Allow(기본값) : CronJob이 동시에 실행되는 작업 허용. 여러 작업이 동시에 실행될 수 있음
- Forbid : 이전 작업이 아직 완료되지 않은 경우에는 새 작업을 실행하지 않으며 대기
- Replace : 새로운 작업을 실행할 때 이전 작업이 아직 완료되지 않은 경우, 현재 실행 중인 작업을 새 작업으로 대체
spec:
schedule: "* * * * *"
concurrencyPolicy: Forbid
CronJob 작업 기록 관리
쿠버네티스에서는 CronJob으로 반복 작업을 할 때 작업의 완료 및 실패에 대한 기록을 .spec.successfulJobsHistoryLimit 및 .spec.failedJobsHistoryLimit 필드를 사용하여 작업 기록을 관리할 수 있습니다.
spec:
schedule: "* * * * *"
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
다음과 같이 작성 시, 성공한 작업을 최대 3개까지 보관하고, 실패한 작업을 최대 1개까지 보관할 수 있습니다.
728x90
반응형
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] Metric API 오류 해결 방법 : Docker Desktop에 Metrics Server 설치 및 TLS 인증 문제 해결 (1) | 2024.08.11 |
---|---|
[Kubernetes] 쿠버네티스 네트워크 통신 오브젝트 : Service 와 Ingress (2) | 2024.05.06 |
[Kubernetes] Kubernetes Dashboard 설치하기 (0) | 2024.03.02 |
[Kubernetes] Docker Desktop에서 쿠버네티스 사용 설정하기 (0) | 2024.03.02 |
[Kubernetes] 쿠버네티스 오브젝트 - 파드(Pod), 레플리카셋(ReplicaSet), 디플로이먼트(Deployment) (0) | 2024.02.11 |