[Retry, k8s] 09. 워크로드 API - 크론잡

Date:     Updated:

카테고리:

태그:

[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으로 제한을 설정한 경우 잡은 종료 시 즉시 삭제된다.

【successfulJobsHistoryLimit】 - 성공한 잡을 저장하는 개수

【failedJobsHistoryLimit】 - 실패한 잡을 저장하는 개수


KUBERNETES 카테고리 내 다른 글 보러가기

댓글 남기기