문제2: CronJob

tothelight·2024년 5월 21일

CKAD 예상 문제

목록 보기
2/14

다음의 조건으로 실행하는 컨테이너를 실행하십시오.

  • /data/ckad/sample.yaml manifest 파일에 pod가 정의되어 있다.
  • sample.yaml을 수정하여 busybox:stable 컨테이너가 매분마다 실행되어야 한다.
  • 10초 내에 완료되거나 kubernetes에 의해 종료되어야 한다.
  • cronjob 이름과 container 이름 모두 hello여야 한다.
  • hello 컨테이너가 성공적으로 실행되었는지 확인하십시오.

명령어 흐름

# CronJob 템플릿을 생성합니다.
$ kubectl create cronjob hello --image=busybox:stable --schedule="* * * * *" --dry-run=client -o yaml > /data/ckad/sample.yaml

# sample.yaml 파일을 엽니다.
$ vi /data/ckad/sample.yaml

# CronJob을 적용합니다.
$ kubectl apply -f /data/ckad/sample.yaml

# CronJobs 목록을 확인합니다.
$ kubectl get cronjobs.batch

# Pods 목록을 확인합니다.
$ kubectl get pods

sample.yaml 내용 수정

apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "* * * * *"  # 매분마다 실행되도록 설정
  jobTemplate:
    spec:
      activeDeadlineSeconds: 10  # 10초 내에 완료되도록 설정
      template:
        spec:
          containers:
          - name: hello  # 컨테이너 이름 설정
            image: busybox:stable  # busybox:stable 이미지 사용
            command:
            - sleep
            - "5"  # 5초 동안 대기
          restartPolicy: Never

솔루션 설명

  1. CronJob 템플릿 생성

    $ kubectl create cronjob hello --image=busybox:stable --schedule="* * * * *" --dry-run=client -o yaml > /data/ckad/sample.yaml
    • kubectl create cronjob 명령어를 사용하여 hello CronJob 템플릿을 생성합니다.
    • --dry-run=client -o yaml 옵션을 사용하여 실제 적용 없이 yaml 파일을 생성합니다.
    • 생성된 템플릿은 /data/ckad/sample.yaml 파일에 저장됩니다.
  2. sample.yaml 파일 수정

    $ vi /data/ckad/sample.yaml
    • vi /data/ckad/sample.yaml 명령어로 sample.yaml 파일을 엽니다.
    • 다음과 같이 파일 내용을 수정합니다.
    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "* * * * *"
      jobTemplate:
        spec:
          activeDeadlineSeconds: 10
          template:
            spec:
              containers:
              - name: hello
                image: busybox:stable
                command:
                - sleep
                - "5"
              restartPolicy: Never
    • apiVersion, kind, metadata, spec 등의 필드를 사용하여 cronjob을 정의합니다.
    • schedule 필드를 * * * * *로 설정하여 매분마다 실행되도록 합니다.
    • activeDeadlineSeconds 필드를 10으로 설정하여 10초 내에 완료되도록 합니다.
    • containers 필드에서 컨테이너 이름을 hello로 설정하고, busybox:stable 이미지를 사용합니다.
    • command 필드에서 sleep 5 명령어를 사용하여 5초 동안 대기하도록 설정합니다.
    • restartPolicy 필드를 Never로 설정하여 작업이 실패하지 않도록 합니다.
  3. CronJob 적용

    $ kubectl apply -f /data/ckad/sample.yaml
    • kubectl apply -f /data/ckad/sample.yaml 명령어로 sample.yaml 파일의 내용을 적용합니다.
  4. CronJobs 목록 확인

    $ kubectl get cronjobs.batch
    • kubectl get cronjobs.batch 명령어로 현재 클러스터에 설정된 cronjobs 목록을 확인합니다.
  5. Pods 목록 확인

    $ kubectl get pods
    • kubectl get pods 명령어로 현재 클러스터에서 실행 중인 pods 목록을 확인합니다.

0개의 댓글