✅ CronJob
CronJob은 다른 매니페스트와 다르게 schedule(얼마나 자주), command(어떤 행동을 수행) 부분이 추가된다.

✅ 크론잡 생성 예제
ex) busybox 이미지를 통해 Pod를 생성하고 생성된 Pod는 1분 단위(schedule) 로 date; echo Hello from the Kubernetes cluster 메시지를 출력(command)하는 크론잡
- yaml 파일 작성
# cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *" #스케쥴 지정
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
imagePullPolicy: IfNotPresent #이미지가 없을 때에만 내려받음
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure #컨테이너에서 실행된 프로세스가 실패할 때에만 다시 시작
- 크론잡 생성 및 확인
# 크론잡 생성
kubectl create job my-job --image=busybox -- date
# 리소스 생성
kubectl apply -f cronjob.yaml
# 파드 확인
kubectl get pods
kubectl logs hello-28909935-66pzd
- 크론잡 상태 확인
- LAST SCHEDULE: 스케쥴을 마지막으로 실행하고 경과된 시간. 실행되지 않은 경우 <none>으로 출력될 수도 있다.
kubectl get cronjob hello

- 크론잡 일시정지: spec.suspend에 true를 설정한다.
kubectl patch cronjob hello -p '{"spec":{"suspend":true}}'

✅ 크론잡을 잡으로 생성
✅ 동시 실행, 실행 시작 기한, 이력 제어
Cronjob에서는 동시 실행, 실행 시작 기한, 이력에 대한 제어를 할 수 있다.
동시 실행 제어
잡 실행이 의도한 시간 간격 안에서 정상 종료할 때는 명시적으로 지정하지 않아도 되지만, 스케쥴 시간 안에 종료되지 않은 경우 어떻게 할 것인지 설정할 수 있다.
spec.concurrencyPolicy에서 동시 실행에 대한 정책을 설정할 수 있다.
- Allow (기본값): 동시 실행에 대한 제한을 하지 않는다.
- Forbid: 이전 Job이 종료되지 않았을 경우 다음 Job은 실행하지 않는다.
- Replace: 이전 Job을 취소하고 새로운 Job을 시작한다.
실행 시작 기한 제어
spec.startingDeadlineSeconds에서 CronJob이 시작될 수 있는 허용 지연 시간(초)을 지정할 수 있다. Kubernetes 마스터 일시 정지 등으로 시작이 지연될 경우를 대비한다.

크론잡 이력
Job 이력 개수를 제어할 수 있다.
- spec.successfulJobsHistoryLimit: 성공한 잡 저장 개수
- spec.failedJobsHistoryLimit: 실패한 잡 저장 개수 설정

# sample-cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: sample-cronjob
spec:
schedule: "*/1 * * * *"
concurrencyPolicy: Allow #동시 실행 정책 지정
startingDeadlineSeconds: 30 #실행 시작 기한 제어
successfulJobsHistoryLimit: 3 #성공한 잡 저장 개수
failedJobsHistoryLimit: 3 #실패한 잡 저장 개수
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure'Cloud > Kubernetes' 카테고리의 다른 글
| Helm (1) | 2025.08.12 |
|---|---|
| External IP 서비스 (0) | 2025.07.07 |
| Service API - 쿠버네티스 클러스터 네트워크와 서비스 (0) | 2025.07.04 |
| Workload API - StatefulSet (0) | 2025.07.04 |
| Workload API - Deployment (0) | 2025.07.03 |