쿠버네티스에서는 주기적으로 작업을 실행할 수 있는 CronJob이라는 리소스를 제공합니다. CronJob은 특정 스케줄에 따라 Job을 생성하며, 이 Job은 하나 이상의 Pod를 생성하여 작업을 수행하고 완료된 후에는 Pod를 삭제합니다.
myapp-cj-dl-al.yaml
: 이 CronJob은 매 분마다 Job을 생성합니다.startingDeadlineSeconds
는 CronJob이 시작할 수 있는 마지막 시간을 초 단위로 설정합니다. 이 경우, CronJob은 스케줄이 시작된 후 100초 이내에 시작해야 합니다.concurrencyPolicy
는Allow
로 설정되어 있어, 이전 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"]
myapp-cj-dl-fb.yaml
: 이 CronJob은myapp-cj-dl-al.yaml
과 비슷하지만,concurrencyPolicy
가Forbid
로 설정되어 있어, 이전 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"]
myapp-cj.yaml
: 이 CronJob은 매 분마다 Job을 생성합니다.startingDeadlineSeconds
와concurrencyPolicy
설정이 없으므로, 기본 설정이 적용됩니다.
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을 사용하면 주기적으로 작업을 수행할 수 있습니다. 예를 들어, 백업 작업이나 리포트 생성 등의 작업을 스케줄링할 수 있습니다.
링크 참조:
'Infra > Kubernetes' 카테고리의 다른 글
쿠버네티스 03-02 Network_External_Service (0) | 2023.09.06 |
---|---|
쿠버네티스 03-01 Network_Internal_Service (0) | 2023.09.06 |
쿠버네티스 02-04 Controller_Job (0) | 2023.09.06 |
쿠버네티스 02-03 Controller_Daemonset (0) | 2023.09.06 |
쿠버네티스 02-02 Controller_Replicaset (0) | 2023.09.06 |