티스토리 뷰

쿠버네티스

CKA 기출개념 정리 Job

jws199 2025. 1. 1. 01:13

1. 문제 Job 생성 및 실행확인

1) 시나리오

(1) 'hello-job'Job 생성: busybox이미지를 생성하여 Job을 생성하며 해당 명령어를 실행해야 함.

echo "Hello, Kubernetes!" && sleep 10 && echo "Job Complete!"

 

2) 해결과정 

(1) YAML 작성 

#hello-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: hello-job
spec:
  template:
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ["sh", "-c", "echo 'Hello, Kubernetes!' && sleep 10 && echo 'Job Complete!'"]
      restartPolicy: Never
  backoffLimit: 4

- restartPolicy: Job은 작업이 실패하면, 기존 Pod를 재사용하지 않고 항상 새롭게 시작하도록 보장해야하기 때문에 Never가 되어야 한다. 즉, 컨테이너가 실패하면 Pod 전체가 종료되고 새로운 pod가 생성되어 작업을 재시도

- restartPolicy: OnFailure: 컨테이너가 실패하면 동일한 Pod내에서 컨테이너를 다시 시작하여 작업을 재시도 --> Job은 대안으로 이를 할 수 있다. (대부분 Never를 선호한다.)

- backOffLimit: 새로운 pod를 생성하여 최대 4번까지 재시도 할 수 있다. 

(2) Job 생성 및 상태 확인 

# Job 생성
kubectl apply -f hello-job.yaml

job.batch/hello-job created

# Job 상태 확인 
kubectl get jobs

NAME        COMPLETIONS   DURATION   AGE
hello-job   1/1           10s        30s

(3) Job 로그 확인

- Job에서 실행된 Pod의 로그를 출력하여 명령어가 제대로 실행되었는지 확인 

kubectl logs -l job-name=hello-job

Hello, Kubernetes!
Job Complete!

2. CronJob 생성 및 스케줄링

1) 시나리오

- Cronjob 'date-cronjob'생성: busybox 이미지 사용. 매분마다 실행되며 해당 명령어를 수행 

date; echo "CronJob executed successfully!"

 

2) 해결과정

(1) YAML 작성 

# date-cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: date-cronjob
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: busybox
            image: busybox
            command: ["sh", "-c", "date; echo 'CronJob executed successfully!'"]
          restartPolicy: Never

(2) CronJob 생성 

kubectl apply -f date-cronjob.yaml

(3) Cronjob 상태 확인  

kubectl get cronjobs

NAME           SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
date-cronjob   */1 * * * *   False     0        <none>          30s

(4) 로그확인 

kubectl logs date-cronjob

Mon Oct 9 12:00:00 UTC 2023
CronJob executed successfully!

3) 스케줄링 문법

(1) Cron표현식 

- ' * * * * *' : 분(0-59) 시(0-23) 일(1-31) 월(1-12,JAN-DEC) 요일 (0-7,SUN-SAT)순서로 나타낸다. 

(2) 기호

- 슬래시(/): 간격을 지정 ex) */5 * * * * : 매 5분마다 실행 

- 쉼표: 여러 값을 지정 ex) 0,15,30,45 * * * * : 매 정각,15분,30분,45분에 실행 

- 대시(-): 범위를 지정 ex) 0-10 9 * * * : 매일 오전 9시부터 9시 10분까지 매 분마다 실행

- 물음표: 특정 필드를 아무값도 지정하지 않음. 주로 날짜, 요일 필드에서 사용 ex) 0 12 ? * MON: 매주 월요일 오후 12시에 실행  

- 샵(#): 특정 요일의 몇 번째 주를 지정 ex) 0 12 * * MON#2 매월 둘째 주 오후 12시에 실행 

- L : 마지막 날 또는 마지막 요일  ex) 0 12 L *  ? 매월 마지막날 오후 12시에 실행 

3. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함