크롭잡은 반복 일정에 따라 잡 (완료를 목표로 실행되는 유한 또는 배치 작업)을 생성한다.
# ┌───────────── 분 (0 - 59)
# │ ┌───────────── 시 (0 - 23)
# │ │ ┌───────────── 일 (1 - 31)
# │ │ │ ┌───────────── 월 (1 - 12)
# │ │ │ │ ┌───────────── 요일 (0 - 6) (일요일부터 토요일까지;
# │ │ │ │ │ 특정 시스템에서는 7도 일요일)
# │ │ │ │ │ 또는 sun, mon, tue, wed, thu, fri, sat
# │ │ │ │ │
# * * * * * <command to execute>
정책 | 의미 |
---|---|
Allow | 중복 실행을 허용 (기본값) |
Forbid | 중복 실행을 금지 |
Replace | 현재 실행 중인 크론잡을 내리고 새로운 크론잡으로 대체 |
# cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
concurrencyPolicy: Allow
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox:1.28
imagePullPolicy: IfNotPresent
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
내용 | 설명 | |
---|---|---|
예약 실행 시간 | */1**** | 매분 컨테이너를 실행 |
컨테이너 이미지 | image:busybox:1.28 | busybox 이미지 사용 |
커맨드와 아규먼트 | args: - /bin/sh - -c - date; echo Hello from the Kubernetes cluster | 매분마다 date 명령과 Hello from the Kubernetes cluster를 출력 |
concurrencyPolicy | Allow | 동시 실행 가능 |
imkunyoung@cloudshell:~/job (kubernetes-397511)$ kubectl create -f cronjob.yaml
cronjob.batch/hello created
imkunyoung@cloudshell:~/job (kubernetes-397511)$ kubectl get pods -w
NAME READY STATUS RESTARTS AGE
mariadb-5bfcbc8dd5-xfxbd 1/1 Running 0 44h
nginx-sidecar 3/3 Running 0 47h
hello-28242720-rcd7n 0/1 Pending 0 0s
hello-28242720-rcd7n 0/1 Pending 0 0s
hello-28242720-rcd7n 0/1 ContainerCreating 0 0s
hello-28242720-rcd7n 1/1 Running 0 1s
hello-28242720-rcd7n 0/1 Completed 0 2s
hello-28242720-rcd7n 0/1 Completed 0 3s
hello-28242720-rcd7n 0/1 Completed 0 4s
hello-28242720-rcd7n 0/1 Completed 0 4s
hello-28242721-mvpf2 0/1 Pending 0 0s
hello-28242721-mvpf2 0/1 Pending 0 0s
hello-28242721-mvpf2 0/1 ContainerCreating 0 0s
hello-28242721-mvpf2 0/1 Completed 0 1s
hello-28242721-mvpf2 0/1 Completed 0 2s
hello-28242721-mvpf2 0/1 Completed 0 3s
hello-28242721-mvpf2 0/1 Completed 0 3s
cronjob 삭제
imkunyoung@cloudshell:~/job (kubernetes-397511)$ kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 0 39s 2m30s
imkunyoung@cloudshell:~/job (kubernetes-397511)$ kubectl delete cronjob hello
cronjob.batch "hello" deleted
imkunyoung@cloudshell:~/job (kubernetes-397511)$ kubectl get pods
NAME READY STATUS RESTARTS AGE
mariadb-5bfcbc8dd5-xfxbd 1/1 Running 0 44h
nginx-sidecar 3/3 Running 0 47h