본문 바로가기
INFRA/DevOps

[K8s] Job Controller

by BTC_프로틴 2022. 10. 24.

Job이란?

<이미지 출처 : [따배쿠] 6-6. 쿠버네티스 Job Controller>

 

  • pod의 정상적인 종료를 관리
  • K8s는 pod를 running 중인 상태로 유지
  • Batch 처리하는 pod는 작업이 완료되면 종료됨
  • Batch 처리에 적합한 controller로 pod의 성공적인 완료를 보장
    • 비정상 종료 시 다시 실행
    • 정상 종료 시 완료
  • definition
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: centos-job
    spec:
    #  completions: 5
    #  parallelism: 2
      activeDeadlineSeconds: 5
      template:
        spec:
          containers:
          - name: centos-container
            image: centos:7
            command: ["bash"]
            args:
            - "-c"
            - "echo 'Hello World'; sleep 25; echo 'Bye'"
          restartPolicy: Never
    #      restartPolicy: OnFailure
      backoffLimit: 3
    ​
  • restartPolicy
    • Never : container가 비정상적으로 종료될 경우 pod를 재시작
    • OnFailure : container가 비정상적으로 종료될 경우 container를 재시작
  • backoffLimit : 재시작 횟수
  • completion : container 실행 횟수 (= replicas)
  • parallelism : running 중으로 유지할 pod 개수
  • activeDeadlineSeconds : 지정된 시간(초) 후에 application 강제 완료 상태로 만듬
  • job 생성
    kubectl create -f job-exam.yaml
    
    • job 삭제
    kubectl delete job jobs.batch centos-job

 

[ Hands -on ]

1. restartPolicy: OnFailure

  • job yaml 파일 생성
vi job-exam.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: centos-job
spec:
  template:
    spec:
      containers:
      - name: centos-container
        image: centos:7
        command: ["bashc"]          # 오류가 나도록 오타 기입
        args:
        - "-c"
        - "echo 'Hello World'; sleep 25; echo 'Bye'"
      restartPolicy: OnFailure
  backoffLimit: 3
  • job을 통한 container 배포
    • backoffLimit로 지정한 횟수 만큼 container 재시작
NAME               READY   STATUS              RESTARTS     AGE   IP               NODE                NOMINATED NODE   READINESS GATES
centos-job-2xgs6   0/1     RunContainerError   3 (2s ago)   44s   192.168.221.14   node2.example.com   <none>           <none>

 

2. restartPolicy: Never

vi job-exam.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: centos-job
spec:
  template:
    spec:
      containers:
      - name: centos-container
        image: centos:7
        command: ["bashc"]        # 오류가 나도록 오타 기입
        args:
        - "-c"
        - "echo 'Hello World'; sleep 25; echo 'Bye'"
      restartPolicy: Never
  backoffLimit: 3
  • job을 통한 container 배포
    • backoffLimit로 지정한 횟수 만큼 pod 재시작
NAME               READY   STATUS       RESTARTS   AGE   IP               NODE                NOMINATED NODE   READINESS GATES
centos-job-9gbr7   0/1     StartError   0          41s   192.168.221.16   node2.example.com   <none>           <none>
centos-job-kqz5h   0/1     StartError   0          36s   192.168.221.17   node2.example.com   <none>           <none>
centos-job-m5n6q   0/1     StartError   0          31s   192.168.221.18   node2.example.com   <none>           <none>
centos-job-rk7ch   0/1     StartError   0          45s   192.168.221.15   node2.example.com   <none>           <none>

 

 

참고 :

[따배쿠] 6-6. 쿠버네티스 Job Controller

'INFRA > DevOps' 카테고리의 다른 글

[K8s] Cluster IP  (0) 2022.11.09
[k8s] Cronjob  (0) 2022.11.01
[k8s] Statefulset  (0) 2022.10.19
[NGINX] Reverse Proxy  (0) 2022.10.11
API Proxy  (0) 2022.10.11

댓글