CronJob으로 자동화된 작업 실행하기
CronJob으로 자동화된 작업 실행하기
이 페이지에서는 쿠버네티스 CronJob 오브젝트를 사용해 자동화된 작업을 실행하는 방법을 보여줘요.
출처: 문서
본문
시작하기 전에
- 실행 중인 쿠버네티스 클러스터(버전 1.21 이상)가 필요하다. 이 튜토리얼은
batch/v1API를 사용한다. 클러스터가batch/v1CronJob API를 지원하지 않는 경우 해당 API 버전을 확인해라. 크론 작업은 구성 파일이 필요하다.
CronJob 만들기
크론 작업은 구성 파일이 필요해요. 다음은 매분 간단한 시연 작업을 실행하는 CronJob의 매니페스트입니다:
다음 명령으로 예시 CronJob을 실행해요:
kubectl create -f https://k8s.io/examples/application/job/cronjob.yaml
출력은 다음과 비슷합니다:
cronjob.batch/hello created
크론 작업을 만든 뒤 다음 명령으로 상태를 확인해요:
kubectl get cronjob hello
출력은 다음과 비슷합니다:
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 0 <none> 10s
명령의 결과에서 알 수 있듯이 크론 작업은 아직 어떤 작업도 스케줄하거나 실행하지 않았어요. 약 1분 안에 작업이 생성될 때까지 기다려요:
kubectl get jobs --watch
출력은 다음과 비슷합니다:
NAME COMPLETIONS DURATION AGE
hello-4111706356 0/1 0s
hello-4111706356 0/1 0s 0s
hello-4111706356 1/1 5s 5s
이제 "hello" 크론 작업이 스케줄한 실행 중인 작업 하나를 보았어요. 작업을 계속 보지 않고 크론 작업을 다시 확인해 작업을 스케줄했는지 볼 수 있어요:
kubectl get cronjob hello
출력은 다음과 비슷합니다:
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 0 50s 75s
크론 작업 hello가 LAST SCHEDULE에 지정된 시간에 작업을 성공적으로 스케줄했음을 볼 수 있어요. 현재 활성 작업은 0개로, 작업이 완료되었거나 실패했음을 의미합니다.
이제 마지막으로 스케줄된 작업이 만든 파드를 찾아 그중 하나의 표준 출력을 확인해요:
작업 이름은 파드 이름과 달라요.
# Replace "hello-4111706356" with the job name in your system
pods=$(kubectl get pods --selector=job-name=hello-4111706356 --output=jsonpath={.items[*].metadata.name})
파드 로그를 보여줘요:
kubectl logs $pods
출력은 다음과 비슷합니다:
Fri Feb 22 11:02:09 UTC 2019
Hello from the Kubernetes cluster
CronJob 삭제하기
크론 작업이 더 이상 필요 없으면 kubectl delete cronjob <cronjob name>으로 삭제해요:
kubectl delete cronjob hello
크론 작업을 삭제하면 그것이 만든 모든 작업과 파드가 제거되고 추가 작업을 만드는 것도 중지돼요. 작업 제거에 대해 더 읽으려면 garbage collection을 참고하세요.
더 알아보기 (Learn more)
- CronJob 개념 문서 읽어보기.
- CronJob API 참조.