본문 바로가기
개발 이야기/Kubernetes

Kubernetes CronJob 실행 해보기

by 농개 2024. 3. 30.
반응형

CronJob은 특정 잡을 주기적으로 실행 시킬 때 사용합니다.

주기적으로 파드를 띄워 프로그램을 실행/종료를 반복합니다.

이번 포스팅에서는 간단한 Cronjob을 실행해봅니다.


목차

    1. cronjob.yml 작성

    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "* * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: hello
                image: busybox
                args:
                - /bin/sh
                - -c
                - date; echo Hello Wolrd!
              restartPolicy: OnFailure

    위 크론잡은 "* * * * *" 형식의 크론표현식을 사용합니다.

    # ┌───────────── 분 (0 - 59)
    # │ ┌───────────── 시 (0 - 23)
    # │ │ ┌───────────── 일 (1 - 31)
    # │ │ │ ┌───────────── 월 (1 - 12)
    # │ │ │ │ ┌───────────── 요일 (0 - 6) (일요일부터 토요일까지;
    # │ │ │ │ │                                   특정 시스템에서는 7도 일요일)
    # │ │ │ │ │                                   또는 sun, mon, tue, wed, thu, fri, sat
    # │ │ │ │ │
    # * * * * *

    참고: https://kubernetes.io/ko/docs/concepts/workloads/controllers/cron-jobs/

     

    그리고 busybox라는 간단한 테스트용도의 도커이미지를 통해 쉘 명령어를 실행하도록 했습니다.

     

    2. 실행

     ~ kubectl apply -f cronjob.yml

     

    3. 실행 확인

     ~ kubectl get jobs -n api
    NAME                 COMPLETIONS   DURATION   AGE
    dev-hello-28529895   1/1           4s         9m16s
    dev-hello-28529896   1/1           5s         8m16s

    위와 같이 실행 확인 가능합니다.

     

    (만약 ArgoCD를 사용한다면 아래와 같이 표시되네요!)

     

    4. 유용한 옵션

    ArgoCD 페이지를 보면 cronjob을 통한 pod 내역이 많이 표시됩니다.

    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "* * * * *"
      successfulJobsHistoryLimit: 10
    ...(중략)

    위와같이 successfulJobsHistoryLimit: 10 옵션을 통해 Job 내역 표시를 제한할 수 있습니다.

     

    반응형

    '개발 이야기 > Kubernetes' 카테고리의 다른 글

    Kubernetes ConfigMap with Springboot  (0) 2024.04.10
    Telepresence 사용해보기  (0) 2024.04.03
    Kubernetes HPA 설정하기  (0) 2024.03.30
    Docker Image를 Minikube 로드하기  (0) 2024.03.24
    ArgoCD를 통해서 Application 배포  (0) 2024.03.24