Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
iconfalse
title목차

Table of Contents

Cron Job개요

Info
iconfalse
  • 기존 리눅스 시스템의 Cron과 같은 동작 표기방법도 동일Crontab과 유사한 동작, 동일한 크론 표기법을 사용
  • CronJob하나에 하나의 작업 실행 권장


info
Info
iconfalse
titlehttps://kubernetes.io/ko/docs/concepts/workloads/controllers/cron-jobs/

  • 이미 하나의 CronJob이 실행중인 경우 CronJob을 추가로 실행할지 결정
  • 동시성 정책 설정하기
    • spec.concurrencyPolicy
      • Allow: 중복 실행을 허용(기본값)
      • Forbid: 중복 실행을 금지
      • Replace: 현재 실행중인 CronJob을 내리고 새로운 CronJob으로 대체


CronJob Manifest

Info
iconfalse

https://dev-k8sref-io.web.app/docs/workloads/cronjob-v1beta1/

Info
iconfalse
  • apiVersion: batch/v1beta1
  • kind: CronJob

  • metadata (ObjectMeta)
  • spec (CronJobSpec)
    • schedule                      #실행 스케줄 설정 Linux Crontab정책과 동일
    • concurrencyPolicy   #동시 실행 가능
    • jobTemplate
  • status (CronJobStatus)
Info
  • 이미 하나의 CronJob이 실행중인 경우 CronJob을 추가로 실행할지 결정
  • 동시성 정책 설정하기
    • spec.concurrencyPolicy
      • Allow: 중복 실행을 허용(기본값)
      • Forbid: 중복 실행을 금지
      • Replace: 현재 실행중인 CronJob을 내리고 새로운 CronJob으로 대체

Code Block
titlecronjob.yaml
linenumberstrue
apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello-cronjob
spec:
  schedule: "*/1 * * * *" # 매분마다 실행
  concurrencyPolicy: Allow # 동시 실행 가능
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox:1.28
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure


CronJob 실습

Info
iconfalse


Code Block
linenumberstrue
sansae@sansaeAir15m2 k8s-lab-workspace % k apply -f cronjob.yaml 
cronjob.batch/hello-cronjob created
sansae@sansaeAir15m2 k8s-lab-workspace % k get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP   7s

NAME                          SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
cronjob.batch/hello-cronjob   */1 * * * *   False     0        <none>          4s


sansae@sansaeAir15m2 k8s-lab-workspace % k get pod
NAME                           READY   STATUS      RESTARTS   AGE
hello-cronjob-28499961-hbpgl   0/1     Completed   0          119s
hello-cronjob-28499962-rtts5   0/1     Completed   0          59s


sansae@sansaeAir15m2 k8s-lab-workspace % k describe cronjob hello-cronjob 
Name:                          hello-cronjob
Namespace:                     default
Labels:                        <none>
Annotations:                   <none>
Schedule:                      */1 * * * *
Concurrency Policy:            Allow
Suspend:                       False
Successful Job History Limit:  3
Failed Job History Limit:      1
Starting Deadline Seconds:     <unset>
Selector:                      <unset>
Parallelism:                   <unset>
Completions:                   <unset>
Pod Template:
  Labels:  <none>
  Containers:
   hello:
    Image:      busybox:1.28
    Port:       <none>
    Host Port:  <none>
    Command:
      /bin/sh
      -c
      date; echo Hello from the Kubernetes cluster
    Environment:     <none>
    Mounts:          <none>
  Volumes:           <none>
Last Schedule Time:  Sun, 10 Mar 2024 00:23:00 +0900
Active Jobs:         <none>
Events:
  Type    Reason            Age    From                Message
  ----    ------            ----   ----                -------
  Normal  SuccessfulCreate  2m26s  cronjob-controller  Created job hello-cronjob-28499961
  Normal  SawCompletedJob   2m19s  cronjob-controller  Saw completed job: hello-cronjob-28499961, status: Complete
  Normal  SuccessfulCreate  86s    cronjob-controller  Created job hello-cronjob-28499962
  Normal  SawCompletedJob   83s    cronjob-controller  Saw completed job: hello-cronjob-28499962, status: Complete
  Normal  SuccessfulCreate  26s    cronjob-controller  Created job hello-cronjob-28499963
  Normal  SawCompletedJob   22s    cronjob-controller  Saw completed job: hello-cronjob-28499963, status: Complete
Code Block
linenumberstrue
sansae@sansaeAir15m2 k8s-lab-workspace % k get pod
NAME                           READY   STATUS      RESTARTS   AGE
hello-cronjob-28504263-m4dkp   0/1     Completed   0          70s
hello-cronjob-28504264-2w5zp   0/1     Completed   0          10s


sansae@sansaeAir15m2 k8s-lab-workspace % k logs hello-cronjob-28504263-m4dkp 
Tue Mar 12 15:03:05 UTC 2024
Hello from the Kubernetes cluster


...