[Retry, k8s] 09. 워크로드 API - 크론잡
카테고리: KUBERNETES
태그: kubernetes
[Retry, k8s] 09. 워크로드 API - 잡크론잡
🔔 크론잡
📜 크론잡 생성
- spec.schedule에는 Cron과 같은 형식으로 시간을 지정할 수 있다.
cat <<EOF > sample-cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: sample-cronjob
spec:
schedule: "*/1 * * * *"
concurrencyPolicy: Allow
startingDeadlineSeconds: 30
successfulJobsHistoryLimit: 5
failedJobsHistoryLimit: 3
suspend: false
jobTemplate:
spec:
completions: 1
parallelism: 1
backoffLimit: 0
template:
spec:
containers:
- name: tools-container
image: amsy810/random-exit:v2.0
restartPolicy: Never
EOF
$ kubectl get cronjobs
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
sample-cronjob */1 * * * * False 0 12s 15s
📜 크론잡 일시 정지
-
spec.suspend가 true로 설정되어 있으면 스케줄 대상에서 제외된다.(기본값 false)
-
실행 후 크론잡을 확인해보면 SUSPEND 부분이 True로 변경되고 더는 잡이 생성되지 않는다.
$ kubectl patch cronjob sample-cronjob -p '{"spec":{"suspend":true}}'
cronjob.batch/sample-cronjob patched
$ kubectl get cronjobs
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
sample-cronjob */1 * * * * True 0 56s 5m59s
📜 크론잡 임의의 시점에 실행
- –from 옵션을 사용하여 크론잡으로 잡을 생성할 수도 있고, 정기적 실행 이외의 시점에 잡을 생성하고 싶은 경우 사용
$ kubectl create job sample-job-from-cronjob --from cronjob/sample-cronjob
job.batch/sample-job-from-cronjob created
📜 동시 실행 제어(concurrencyPolicy)
- 크론잡이 실행되는 동안 다른 크론잡 인스턴스가 실행되는 것을 허용할지 여부를 결정
| 정책 | 개요 |
|---|---|
| Allow(기본값) | 동시에 여러 개의 크론잡 인스턴스가 실행될 수 있습니다. |
| Forbid | 이전 크론잡 인스턴스가 실행 중인 경우 새로운 인스턴스를 실행하지 않습니다. |
| Replace | 이전 크론잡 인스턴스가 실행 중인 경우 새로운 인스턴스로 대체합니다. |
📜 실행 시작 기한 제어(startingDeadlineSeconds)
- 크론잡이 시작되기 전에 크론잡 컨트롤러가 일시적으로 정지되는 경우 등과 같이 시작 시간이 지연되면, 그 지연 시간을 허용하는 시간을 지정
📜 크론잡 이력
- 크론잡이 생성할 잡을 몇 개 유지할지를 지정(기본값 3), 이 두 설정값을 0으로 제한을 설정한 경우 잡은 종료 시 즉시 삭제된다.
댓글 남기기