본문 바로가기
클라우드 및 인프라/Kubernetes

[k8s] 쿠버네티스 Job, CronJob

by 작은소행성 2023. 3. 29.

Job 

1회성 작업에 사용됨

- DB 마이그레이션과 같이 한번의 작업으로 처리가 끝나는 것 

- 어플리케이션 오류나 예외로 실패했을 때는 성공할때까지 Job 컨트롤러가 파드를 다시 만든다

- 파일을 수정하고자 하면 삭제 후 다시 apply 해야한다.

- job 하나가 여러개의 Pod를 실행하게 할 수 있다.

 

 

Cron Job

주기적인 배치 작업을 실행할 때 사용됨 

- 저장소 백업, 메일 송신 등과 같은 처리에 사용됨 

- 리눅스, 유닉스의 Cron 과 비슷함

- Job의 실행 스케줄링을 설정할 수 있음 

 

 

 

 

job 예제코드

apiVersion: batch/v1
kind: Job
metadata:
  name: job.yaml
spec: ## 1회성 작업
  template:
    spec:
      containers:
        - name: job
          image: alpine-curl
          imagePullPolicy: IfNotPresent
          command: [ /bin/sh, -c,curl --connect-timeout 300 --max-time 300 -L -X GET https://localhost:8080/api/v1/schedule/point/job ]
      restartPolicy: OnFailure

 

cron job 예제코드

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cron-job.yaml
spec:
  schedule: "0 0 1 1,4,7,10 *" # 분기별 1, 4, 7, 10월 - 1일 0시 0분에
  concurrencyPolicy: Replace
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: cron-job
              image: alpine-curl
              imagePullPolicy: IfNotPresent
              command: [/bin/sh, -c,curl --connect-timeout 300 --max-time 300 -L -X GET https://localhost:8080/api/v1/schedule/point/cron-job]
          restartPolicy: OnFailure

 

 

잡 실행하기

kubectl apply -f job.yaml

 

잡 확인하기

kubectl get jobs

 

잡 상세정보 확인하기

# kubectl describe job {job name}
kubectl describe job cron-job

 

잡 삭제하기

kubectl get job
kubectl delete job {job name}

kubectl get cronjob
kubectl delete cronjob {cronjob name}

 

 

cron job

https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#deleting-a-cron-job

반응형