본문 바로가기
INFRA/DevOps

[K8S] CronJob

by BTC_민물공원 2023. 11. 25.

베하~! BTC_녹차공원 팀의 민물공원 입니다.

이번주는 CronJob에 대해 알아보겠습니다!

 

CronJob


CronJob은 주기적으로 특정 동작을 수행하고 종료하는 배치 작업을 정의하기 위한 리소스예요.

리눅스 크론 스케쥴링 방법으로 사용해요.

내부적으로  Job을 생성하여 작업을 수행하는데, 이때 Job은 내부적으로 Pod를 만들어요.

주기적으로 데이터를 백업하거나 데이터 점검 및 알림 전송 등의 목적으로 사용할 수 있어요.

 

CronJob 실습


이번 실습도 KileerCoda 에서 따라해보아요.

https://killercoda.com/ 

 

Killercoda Interactive Environments

Learn DevOps Linux Kubernetes CKS CKA CKAD Git Cassandra etc | Katacoda compatible

killercoda.com

 

매분 date 명령어를 수행하는 CronJob을 생성해보아요.

image는 busybox:1.28 을 사용하고 한번 실행되면 무조건 30초 안에 종료될 수 있도록 설정해볼거예요.

 

apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  startingDeadlineSeconds: 30
  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 의 yaml 파일을 생성한뒤 실행해봅니다.

vi cronjob.yaml

kubectl apply -f cronjob.yaml

 

CronJob 이 실행되고 있는지 확인하고 job-name을 확인합니다.

kubectl get cronjobs.batch 

kubectl get job --watch

 

pod 매개변수에 job-name 을 지정합니다. <job-name> 위치에 위에서 확인한 job-name을 기입합니다.

pods=$(kubectl get pods --selector=job-name=<job-name> --output=jsonpath={.items[*].metadata.name})

 

CronJob 의 log 를 확인합니다.

kubectl logs $pods

 

CronJob 이 정상적으로 동작하고있음을 확인할 수 있어요!

 

이렇게 오늘은 CronJob 에 대해 알아보았는데요.

다음번에는 더 흥미로운 주제로 찾아뵙겠습니다.

 

이상 BTC_녹차공원 팀이였습니다!

베빠~!

'INFRA > DevOps' 카테고리의 다른 글

[DevOps] Django  (0) 2023.12.07
AWS Chatbot을 이용한 ChatOps 모니터링  (0) 2023.12.04
[DevOps] React  (2) 2023.11.24
[K8S] Environment  (1) 2023.11.12
[K8S] SecurityContext  (1) 2023.10.28

댓글