ch4. Replication and other controllers: deploying managed pods
4.6. Scheduling Jobs to run periodically or once in the future
소챕터들
- 4.1 keeping pods healthy
- 4.2. introducing replicationcontrollers
- 4.3. using replicasets instead of replicationcontroller
- 4.4. running exactly one pod on each node with daemonset
- 4.5. running pods that perform a single completable task
- 4.6. scheduling jobs to run periodically or once in the future
Job resource는 생성되자마자 즉시 pod를 실행시킨다. 하지만 이들을 미래 특정 시간에 실행시키거나 반복적으로 실행시킬 일이 있을 수 있다.
Kubernetes의 cron job은 CronJob
resource로 생성 가능하다.
Creating a CronJob
15분마다 작동하는 batch job이 필요하다고 상상해보자.
cronjob.yaml
을 만들고 CronJob resource를 만들어보자
apiVersion: batch/v1beta1 1
kind: CronJob
metadata:
name: batch-job-every-fifteen-minutes
spec:
schedule: "0,15,30,45 * * * *" 2
jobTemplate:
spec:
template: 3
metadata: 3
labels: 3
app: periodic-batch-job 3
spec: 3
restartPolicy: OnFailure 3
containers: 3
- name: main 3
image: luksa/batch-job 3
- 2:
spec.schedule
로 일반 형태의 cron schedule을 추가하면 된다 - CronJob이 생성할 pod template
$ kubectl create -f cronjob.yaml
cronjob.batch/batch-job-every-fifteen-minutes created
$ kubectl get cj
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
batch-job-every-fifteen-minutes 0,15,30,45 * * * * False 0 <none> 15s
Understanding how scheduled jobs are run
Job이나 pod가 생성되었지만 늦게 실행되는 경우가 있을 수 있다. 이런 경우를 위해서 startingDeadlineSeconds
를 추가할 수 있다.
apiVersion: batch/v1beta1
kind: CronJob
spec:
schedule: "0,15,30,45 * * * *"
startingDeadlineSeconds: 15 1
...
이 경우 15초가 지날때 까지 실행이 되지 않으면 실패한 것으로 간주된다.
4.6. Scheduling Jobs to run periodically or once in the future
Job resource는 생성되자마자 즉시 pod를 실행시킨다. 하지만 이들을 미래 특정 시간에 실행시키거나 반복적으로 실행시킬 일이 있을 수 있다.
Kubernetes의 cron job은 CronJob
resource로 생성 가능하다.
Creating a CronJob
15분마다 작동하는 batch job이 필요하다고 상상해보자.
cronjob.yaml
을 만들고 CronJob resource를 만들어보자
apiVersion: batch/v1beta1 1
kind: CronJob
metadata:
name: batch-job-every-fifteen-minutes
spec:
schedule: "0,15,30,45 * * * *" 2
jobTemplate:
spec:
template: 3
metadata: 3
labels: 3
app: periodic-batch-job 3
spec: 3
restartPolicy: OnFailure 3
containers: 3
- name: main 3
image: luksa/batch-job 3
- 2:
spec.schedule
로 일반 형태의 cron schedule을 추가하면 된다 - CronJob이 생성할 pod template
$ kubectl create -f cronjob.yaml
cronjob.batch/batch-job-every-fifteen-minutes created
$ kubectl get cj
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
batch-job-every-fifteen-minutes 0,15,30,45 * * * * False 0 <none> 15s
Understanding how scheduled jobs are run
Job이나 pod가 생성되었지만 늦게 실행되는 경우가 있을 수 있다. 이런 경우를 위해서 startingDeadlineSeconds
를 추가할 수 있다.
apiVersion: batch/v1beta1
kind: CronJob
spec:
schedule: "0,15,30,45 * * * *"
startingDeadlineSeconds: 15 1
...
이 경우 15초가 지날때 까지 실행이 되지 않으면 실패한 것으로 간주된다.