목차
- 잡을 지정한 시간마다 작동시키기
- 크론잡 YAML 작성하기
- 스케줄 생성하기
- CronJob에 데드라인 지정하기
잡을 지정한 시간마다 작동시키기
잡 리소스를 생성하면 즉시 해당하는 파드를 실행합니다. 그러나 많은 배치 잡이 미래의 특정 시간 또는 지정된 간격으로 반복 실행해야 합니다. 예를들면 정기 업데이트 등이 있을 것 같습니다. 이러한 기능은 리눅스 명령어 중에서도 cron 명령어가 있었고 쿠버네티스에서도 이를 지원합니다.
쿠버네티스에서의 크론 작업은 크론잡 리소스를 만들어 구성합니다. 잡 실행을 위한 스케줄은 잘 알려진 크론 형식으로 지정하므로, 일반적인 크론 작업에 익숙하다면 금방 쿠버네티스의 크론잡을 이해할 수 있을 것입니다.
쿠버네티스는 설정된 시간에 잡 리소스가 생성되면 앞에서 배운 것처럼 하나 이상의 파드 복제본이 잡의 파드 템플릿에 따라 생성합니다. 잡 리소스가 생성되면 앞에서 배운 것처럼 하나 이상의 파드 복제본이 잡의 파드 템플릿에 따라 생성되고 시작합니다. 사실 그 이상은 특별한 것이 없습니다.
크론잡 YAML 작성하기
이 예제는 매 15분마다 배치 잡을 실행하는 것을 가정합니다.
apiVersion: batch/v1beta1 > CronJob의 api 버전입니다.
kind: CronJob
metadata:
name: batch-job-every-fifteen-minutes
spec:
schedule: "0,15,30,45 * * * *" > 매일, 매시간 0, 15, 30, 45분에 실행한다는 뜻입니다.
jopTemplate:
spec:
template:
metadata:
labels:
app: periodic-batch-jop
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-jop
스케줄 생성하기
크론의 스케줄 형식에 익숙하지 않을 수 있으니 간단히 소개하자면 스케줄은 왼쪽엣 오른쪽으로 다섯 개의 항목을 갖고 있습니다.
schedule: <분 / 시 / 일 / 월 / 요일>
위 예제를 예로들면 다음과 같습니다.
schedule: "0,15,30,45 * * * *"
0,15,30,45 : 0, 15, 30, 45분 마다
* : 매시(0~23)
* : 매일(1~31)
* : 매월(1~12)
* : 모든 요일(0~7, 이 때 0과 7은 일요일입니다.)
CronJob에 데드라인 지정하기
잡 리소스는 대략 예정된 시간에 크론잡 리소스에서 생성됩니다. 그럼 잡은 파드를 생성하게 됩니다. 잡이나 파드가 상대적으로 늦게 생성되고 실행될 수 있습니다. 따라서 예정된 시간을 너무 초과해 시작돼서는 안 된다는 엄격한 요구 사항을 갖게 할 수 있습니다. 이런 경우 다음과 같이 startingDeadlineSeconds 필드를 지정해 데드라인을 설정할 수 있습니다.
apiVersion: batch/v1beta1
kind: CronJob
spec:
schedule: "0,15,30,45 * * * *"
startingDeadlineSeconds: 15
...
이 예제에서 매 15분 마다 실행하는데 어떠한 이유에서든 15초가 지나도 시작하지 않으면 잡이 실행되지 않고 실패로 표시됩니다.
일반적인 상황에서 크론잡은 스케줄에 설정한 각 실행에 항상 하나의 잡만 생성하지만 두개의 잡이 동시에 생성되거나 전혀 생성되지 않을 수 있습니다. 첫 번째 문제를 해결하려면 잡이 멱등성을 가져야 합니다. 두 번째 문제점의 경우 다음 번 잡 실행이 이전의 실행에서 완료했어야 하는 작업을 수행하는지 확인해야 합니다.
'Container > Kubernetes' 카테고리의 다른 글
[Kubernetes Service] 2. 서비스를 검색하는 방식 4가지 (0) | 2023.04.10 |
---|---|
[Kubernetes Service] 1. 쿠버네티스에서 서비스 (0) | 2023.04.10 |
[Kubernetes] 일회성 작업 효율적으로 관리하기 (1) Job 리소스 (0) | 2023.04.09 |
[Kubernetes] 파드 효율적으로 관리하기 (3) 데몬셋이란? (0) | 2023.04.09 |
[Kubernetes] 파드 효율적으로 관리하기 (2) 레플리카셋이란? (0) | 2023.04.08 |