[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로 하여 리소스를 절약하고 실패하는 경우에 대해서만 확인할수 있도록 하는것이 좋습니다.
반응형
'클라우드 > Kubernetes' 카테고리의 다른 글
k9s 설치와 사용방법 (쿠버네티스 UI 관리 도구) (1) | 2023.12.08 |
---|---|
쿠버네티스 관리 도구 kubectl 설치와 사용방법 (0) | 2023.11.03 |
helm install no matches for kind "Certificate" 에러 해결 & Cert-manager란?? (0) | 2022.12.21 |
Grafana OAuth 방식으로 Keycloak Login 연동하기 #JWT 토큰 발행 (1) | 2022.05.18 |
[Kubernetes] Grafana 에서 Kafka 모니터링 하기 #Prometheus #kafka-exporter (0) | 2022.04.01 |
댓글