모음/[쿠버네티스 인 액션]

[쿠버네티스 인 액션] 4장. 레플리케이션과 그 밖의 컨트롤러 - 잡, 크론잡

ttoance 2024. 9. 9. 01:10

4.5 잡 

- 작업을 완료한 후에 종료되는 테스크 일 경우 사용 

- 파드의 컨테이너 내부에서 실행 중인 프로세스가 성공적으로 완료되면 컨테이너를 다시 시작하지 않는 파드 실행할 수 있음. 

- 장애가 발생한 경우 잡에서 컨테이너 다시 시작할 것인지 설정할 수 있음. 

 

kubernetes-in-action/Chapter04/batch-job.yaml at master · luksa/kubernetes-in-action (github.com)

 

kubernetes-in-action/Chapter04/batch-job.yaml at master · luksa/kubernetes-in-action

Code from the Kubernetes in Action book. Contribute to luksa/kubernetes-in-action development by creating an account on GitHub.

github.com

apiVersion: batch/v1
kind: Job
metadata:
  name: batch-job
spec:
  template:
    metadata:
      labels:
        app: batch-job
    spec:
      restartPolicy: OnFailure
      containers:
      - name: main
        image: luksa/batch-job

apiVersion : batch/v1, kind: Job 으로 생성 

restartPolicy : Onfailure 혹은 Never로 명시적으로 설정해야함. 

 

kubernetes-in-action/Chapter04/multi-completion-batch-job.yaml at master · luksa/kubernetes-in-action (github.com)

 

kubernetes-in-action/Chapter04/multi-completion-batch-job.yaml at master · luksa/kubernetes-in-action

Code from the Kubernetes in Action book. Contribute to luksa/kubernetes-in-action development by creating an account on GitHub.

github.com

apiVersion: batch/v1
kind: Job
metadata:
  name: multi-completion-batch-job
spec:
  completions: 5
  template:
    metadata:
      labels:
        app: batch-job
    spec:
      restartPolicy: OnFailure
      containers:
      - name: main
        image: luksa/batch-job

차례로 다섯 개의 파드를 실행하며, 처음에 파드 하나 만들고, 컨테이너 완료되면 두번째 파드 만들어 다섯 개의 파드가 성공적으로 완료될 때까지 과정 계속함. 

 

kubernetes-in-action/Chapter04/multi-completion-parallel-batch-job.yaml at master · luksa/kubernetes-in-action (github.com)

 

kubernetes-in-action/Chapter04/multi-completion-parallel-batch-job.yaml at master · luksa/kubernetes-in-action

Code from the Kubernetes in Action book. Contribute to luksa/kubernetes-in-action development by creating an account on GitHub.

github.com

apiVersion: batch/v1
kind: Job
metadata:
  name: multi-completion-batch-job
spec:
  completions: 5
  parallelism: 2
  template:
    metadata:
      labels:
        app: batch-job
    spec:
      restartPolicy: OnFailure
      containers:
      - name: main
        image: luksa/batch-job

병렬로 수행될 수 있게 parallelism 속성 줄 수 있음.

 

4.6 크론잡 

일정 시간 또는 지정된 가격으로 반복 실행 

kubernetes-in-action/Chapter04/cronjob.yaml at master · luksa/kubernetes-in-action (github.com)

 

kubernetes-in-action/Chapter04/cronjob.yaml at master · luksa/kubernetes-in-action

Code from the Kubernetes in Action book. Contribute to luksa/kubernetes-in-action development by creating an account on GitHub.

github.com

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: batch-job-every-fifteen-minutes
spec:
  schedule: "0,15,30,45 * * * *"
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: periodic-batch-job
        spec:
          restartPolicy: OnFailure
          containers:
          - name: main
            image: luksa/batch-job

일반적인 상황에서 잡이 크론잡은 스케줄에 설정한 각 실행에 항상 하나의 잡만 생성하지만, 

- 두 개의 잡이 동시에 생성될 수 있거나 => 멱등성이 있어야함 (여러번 실행해도 원치 않는 결과 나오지 않게함)

- 전혀 생성되지 않을 수 있다. => 다음 번 잡이 이전의 실행에서 완료됐어야 하는 작업 수행하는지 확인해야함 

반응형