[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/