728x90
Kubernetes Cronjob
Kubenetes에서 제공하는 기능 중 하나이며 Linux의 service + timer의 기능과 비슷
말그대로 Cronjob을 제공
특정 시간에 script를 실행하도록 한다거나.. 가능
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: test
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: chicken-test
image: {{이미지 주소}}
imagePullPolicy: Always
command: ["python", "main.py"]
args: ["env", "test"]
env:
- name: "chicken"
value: "test"
restartPolicy: OnFailure
직접 작성한 cronjob.yaml을 가져와서 일부 수정한 내용
k8s version이 낮아서 beta버전을 사용, 최신버전은 apiVersion에 batch/v1을 사용하면 됨
Schedule 형식은 *(분) *(시간) *(날짜) *(달) *(요일)
분은 0~59, 시간은 0~23, 날짜는 1~31, 달은 1~12, 요일은 0~6(월~금) 으로 설정 가능
그 외에 기본적인 yaml 내용은 image 주소, pull정책, command, args, env 등이 존재하고
restartPolicy를 통해 OnFailure로 실패시 다시 하거나, Never로 설정하여 한번 실행 후 종료하도록 설정 가능
Cronjob Check
kubectl create -f cronjob.yaml로도 cronjob적용이 가능
나는 helm chart를 통해 cronjob을 적용하였다.
helm init한 chart dir에서 helm install -f cronjob.yaml chicken-test . 를 통해 적용
% kubectl get cronjob
kubeNAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
chiekcn-test 0 5 * * 3 False 0 25m 3d2h
% kubectl get jobs
NAME COMPLETIONS DURATION AGE
chicken-test-16730000 1/1 75s 25m
--watch를 통해 실행되는 것을 실시간으로 확인 가능
% kubectl get pods --selector=job-name=chicken-test-16730000
NAME READY STATUS RESTARTS AGE
chicken-test-16730000-zxnzl 0/1 Completed 0 28m
% kubectl logs chicken-test-16730000-zxnzl
Hello
이렇게 selector를 통해 pod의 정보를 가져온 뒤 로그를 확인할 수 있음
반응형
댓글