이세개발
article thumbnail

쿠버네티스에서는 주기적으로 작업을 실행할 수 있는 CronJob이라는 리소스를 제공합니다. CronJob은 특정 스케줄에 따라 Job을 생성하며, 이 Job은 하나 이상의 Pod를 생성하여 작업을 수행하고 완료된 후에는 Pod를 삭제합니다.

  1. myapp-cj-dl-al.yaml: 이 CronJob은 매 분마다 Job을 생성합니다. startingDeadlineSeconds는 CronJob이 시작할 수 있는 마지막 시간을 초 단위로 설정합니다. 이 경우, CronJob은 스케줄이 시작된 후 100초 이내에 시작해야 합니다. concurrencyPolicyAllow로 설정되어 있어, 이전 Job이 완료되지 않은 상태에서도 새 Job을 시작할 수 있습니다.
apiVersion: batch/v1
kind: CronJob
metadata:
  name: myapp-cj-dl-al
spec:
  schedule: "* * * * *"
  startingDeadlineSeconds: 100
  concurrencyPolicy: Allow
  jobTemplate:
    spec:
      template:
        metadata:
           labels:
             app: myapp-cj-dl-al
        spec:
          restartPolicy: OnFailure
          containers:
          - name: sleep
            image: busybox
            command: ["sleep", "80"]
  1. myapp-cj-dl-fb.yaml: 이 CronJob은 myapp-cj-dl-al.yaml과 비슷하지만, concurrencyPolicyForbid로 설정되어 있어, 이전 Job이 완료되기 전에는 새 Job을 시작할 수 없습니다.
apiVersion: batch/v1
kind: CronJob
metadata:
  name: myapp-cj-dl-fb
spec:
  schedule: "* * * * *"
  startingDeadlineSeconds: 100
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
           labels:
             app: myapp-cj-dl-fb
        spec:
          restartPolicy: OnFailure
          containers:
          - name: sleep
            image: busybox
            command: ["sleep", "80"]
  1. myapp-cj.yaml: 이 CronJob은 매 분마다 Job을 생성합니다. startingDeadlineSecondsconcurrencyPolicy 설정이 없으므로, 기본 설정이 적용됩니다.
apiVersion: batch/v1
kind: CronJob
metadata:
  name: myapp-cj
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        metadata:
           labels:
             app: myapp-cj
        spec:
          restartPolicy: OnFailure
          containers:
          - name: sleep
            image: busybox
            command: ["sleep", "50"]

CronJob을 생성하려면 다음 명령어를 사용합니다:

kubectl create -f <cronjob-file-name>.yaml

CronJob의 상태를 확인하려면 다음 명령어를 사용합니다:

kubectl get cronjobs

CronJob을 수정하려면 다음 명령어를

사용합니다:

kubectl edit cj <cronjob-name>

마지막으로, CronJob을 삭제하려면 다음 명령어를 사용합니다:

kubectl delete cj <cronjob-name>

이렇게 CronJob을 사용하면 주기적으로 작업을 수행할 수 있습니다. 예를 들어, 백업 작업이나 리포트 생성 등의 작업을 스케줄링할 수 있습니다.


링크 참조:

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!