본문 바로가기
개발/개발공부

Kubernetes Cronjob / 쿠버네티스, 크론잡, container, k8s, 반복, 크론잡

by 치킨개발자 2023. 1. 16.
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의 정보를 가져온 뒤 로그를 확인할 수 있음

반응형

댓글