Cronjob이란?
- 사용자가 원하는 시간에 job 실행 예약 지원
- Jon controller로 실행할 application pod를 주기적으로 반복해서 실행
- Linux의 cronjob의 스케줄링 기능을 job controller에 추가한 API
- Data backup, Send emails, Cleaning tasks과 같은 반복해서 실행하는 job을 운영해야 할 때 사용
- Crobjob Schedule : “분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-6)”
- Minutes (from 0 to 59)
- * * * * * : 1분마다 실행
- */5 * * * * : 5분마다 실행
- Hours (from 0 to 23)
- Day of the month (from 1 to 31)
- Month (from 1 to 12)
- Day of the week (from 0 to 6)
- Minutes (from 0 to 59)
- definition
apiVersion: batch/v1
kind: CronJob
metadata:
name: cronjob-exam
spec:
schedule: "* * * * *" # 반복해서 실행할 job의 스케줄 기입
jobTemplate: # job controller의 내용을 jobTemplate에 기입
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- echo Hello; sleep 10; echo Bye
restartPolicy: Never
[ Hands - on ]
1. concurrencyPolicy: Forbid
- cronjob yaml 파일 생성
- startingDeadlineSeconds : 지정된 시간(초) 안에 job을 실행하지 못하면 job을 cancel
- concurrencyPolicy :
- Allow : default, 한번에 여러 개의 job이 실행
- Forbid : 한번에 하나의 job만 실행
apiVersion: batch/v1
kind: CronJob
metadata:
name: cronjob-exam
spec:
schedule: "* * * * *"
startingDeadlineSeconds: 500
# concurrencyPolicy: Allow
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- echo Hello; sleep 10; echo Bye
restartPolicy: Never
- 한번에 하나의 job만 실행되는 것을 확인
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cronjob-exam-27577547-x4lrd 0/1 Completed 0 2m32s 192.168.221.19 node2.example.com <none> <none>
cronjob-exam-27577548-4n99d 0/1 Completed 0 92s 192.168.221.20 node2.example.com <none> <none>
cronjob-exam-27577549-gzj8r 0/1 Completed 0 32s 192.168.221.21 node2.example.com <none> <none>
2. concurrencyPolicy: Forbid
- cronjob yaml파일 생성
apiVersion: batch/v1
kind: CronJob
metadata:
name: cronjob-exam
spec:
schedule: "* * * * *"
startingDeadlineSeconds: 500
concurrencyPolicy: Allow
# concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- echo Hello; sleep 100; echo Bye
restartPolicy: Never
- 한번에 여러 개의 job이 실행되는 것을 확인
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cronjob-exam-27577559-dxdx2 0/1 Completed 0 3m4s 192.168.221.29 node2.example.com <none> <none>
cronjob-exam-27577560-6bjt6 0/1 Completed 0 2m4s 192.168.221.30 node2.example.com <none> <none>
cronjob-exam-27577561-rzsd6 1/1 Running 0 64s 192.168.221.31 node2.example.com <none> <none>
cronjob-exam-27577562-n2z2d 1/1 Running 0 4s 192.168.221.32 node2.example.com <none> <none>
'INFRA > DevOps' 카테고리의 다른 글
[k8s] NodePort (0) | 2022.11.15 |
---|---|
[K8s] Cluster IP (0) | 2022.11.09 |
[K8s] Job Controller (0) | 2022.10.24 |
[k8s] Statefulset (0) | 2022.10.19 |
[NGINX] Reverse Proxy (0) | 2022.10.11 |
댓글