[k8s] cronjob
cronjob์ ๋ฏธ๋ฆฌ ์ ์ํ ์ผ์ ์ ๋ฐ๋ผ ํ๋๋ฅผ ๋๋ ค์ฃผ๋ ์ปจํธ๋กค๋ฌ ๋จ์๋ค.
๋งจ๋ linux์์ cron์ผ๋ก 1์๊ฐ ๊ฐ๊ฒฉ ํ๋ก์ธ์ค ๋์ฐ๋๊ฑธ ๊ทธ๋๋ก ํด์ค๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
cronjob ๋ง๋ค๊ธฐ
yaml์ ๊ธฐ๊น๋๊ฒ ๋ง์๋ณด์
apiVersion: batch/v1
kind: CronJob
metadata:
name: test-cron
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
metadata:
labels:
app: test-cron
spec:
containers:
- name: test-cron
image: myyrakle/node-cronjob-for-test
imagePullPolicy: IfNotPresent
restartPolicy: OnFailure
๊ฐ์ฅ ์ค์ํ schedule์๋ ์ค์ผ์คํ cron์์ด ๋ค์ด๊ฐ๋ค. ๋ชจ๋ฅธ๋ค๋ฉด cron ํํ์์ ๊ฒ์ํด๋ณด๊ธธ ๋ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ์ง๋ ๋ด๊ฐ ๋ง์๋์๊ฑธ ๋ฃ์ด๋จ๋๋ฐ, ๊ทธ๋ฅ ํ์ฌ ๋ก์ปฌ IP๋ ์๊ฐ๋ง ์ฝ์์ ์ฐ๊ณ ๋๋ด๋ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ด ๋ค์ด์๋ค.
๊ตฌ์ฑ์ด ๊ถ๊ธํ๋ค๋ฉด ์๋๋ก ๋ค์ด๊ฐ๋ฉด ๋๋ค.
https://github.com/myyrakle/infrastructures/tree/master/Dockerfiles/examples/node-cronjob-for-test
๋์์์, ๋ฐฉ๊ธ ๋ง์๋์ yaml๋ก ํฌ๋ก ์ก์ ์์ฑํด๋ณด๊ฒ ๋ค.
kubectl apply -f cron.yaml

๊ทธ๋ผ ์ด๋ฐ์์ผ๋ก ์์ฑ์ด ๋ ๊ฒ์ด๋ค.
ํฌ๋ก ์์ ๋ชจ๋ ๊ฑธ ์์ผ๋์นด๋๋ก ํด๋์ ์ง๊ธ์ 1๋ถ๋ง๋ค ํ๋์ฉ ๋์ฐ๊ฒ๋ ๋์ด์๋ค.
๋ณด๋ฉด ์ด์
์๊ฐ์ด ๋ ๋๋ง๋ค ํ๋๋ฅผ ํ๋์ฉ ๋์ธ ๊ฒ์ด๋ค.
์ด๋ฏธ ์ง๋๊ฐ ํ๋์ ๋ํด์๋ ๋ก๊ทธ๋ฅผ ๋ณผ ์ ์๊ฒ๋, ์ฑ๊ณตํ ํ๋๋ ์ต๋ 3๊ฐ๊น์ง ๋ณด๊ดํ๊ณ , ์คํจํ๊ฑด ์ต๋ 1๊ฐ๊น์ง ๋ณด๊ดํ๋ค. ๋ฐ๋ก ์ต์
์ ์ฃผ๋ฉด ๋๋ฆด ์ ์๋ค.
๋ณด๋ฉด ์ด์ ๋์๊ฐ ๊ฒ๋ค์ด ์ ์ฐํ์์ ๊ฒ์ด๋ค.
1๋ถ๋ง๋ค ์์๊ฒ ์ฐํ๋ค.
๋ฐฐํฌ์ ๋ํด์๋ ๋ฐ๋ก ๊ณ ๋ คํ ๊ฒ์ ์์ ๊ฒ์ด๋ค.
์ค์ผ์ค๋ง์ ๋ด๋ถ ์ค์ผ์ค๋ฌ๊ฐ ์์์ ๊ด๋ฆฌํด์ฃผ๊ณ , cronjob ์ค์ ๋ง ์ ์ ํ ๊ฐฑ์ ํด์ฃผ๋ฉด ์์์ ๋์์ค๋ค.
์ฐธ์กฐ
https://kubernetes.io/ko/docs/concepts/workloads/controllers/cron-jobs/