Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

36.2. 작업 생성

작업 구성은 다음 주요 부분으로 구성됩니다.

  • Pod에서 생성할 애플리케이션을 설명하는 pod 템플릿입니다.
  • 병렬로 실행 중인 Pod 복제본 수를 지정하는 선택적 parallelism 매개변수입니다. 지정하지 않으면 기본값은 completions 매개변수입니다.
  • 선택적 completions 매개변수로 작업을 실행해야 하는 동시에 실행 중인 Pod 수를 지정합니다. 지정하지 않으면 기본값은 1입니다.

다음은 작업 리소스의 예입니다.

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  parallelism: 1    1
  completions: 1    2
  template:         3
    metadata:
      name: pi
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: OnFailure    4
  1. 작업이 병렬로 실행해야 하는 Pod 복제본 수에 대한 선택적 값입니다. 기본값은 completions 입니다.
  2. 작업이 완료된 것으로 표시하는 데 필요한 성공적인 Pod 완료 횟수에 대한 선택적 값입니다. 기본값은 1입니다.
  3. 컨트롤러에서 생성하는 Pod용 템플릿입니다.
  4. Pod의 재시작 정책입니다. 이 정책은 작업 컨트롤러에 적용되지 않습니다. 자세한 내용은 36.2.1절. “알려진 제한 사항” 을 참조하십시오.

oc run 을 사용하여 단일 명령에서 작업을 생성하고 시작할 수도 있습니다. 다음 명령은 이전 예제에서 지정한 것과 동일한 작업을 생성하고 시작합니다.

$ oc run pi --image=perl --replicas=1  --restart=OnFailure \
    --command -- perl -Mbignum=bpi -wle 'print bpi(2000)'

36.2.1. 알려진 제한 사항

작업 사양 재시작 정책은 작업 컨트롤러가 아닌Pod에만 적용됩니다. 그러나 작업 컨트롤러는 작업을 완료할 때까지 계속 재시도하도록 하드 코딩되어 있습니다.

다음과 같이 restartPolicy: never 또는 --restart=NeverrestartPolicy와 동일한 동작을 생성합니다. OnFailure 또는 --restart=OnFailure. 즉 작업이 실패하면 작업이 성공할 때까지 (또는 작업을 수동으로 삭제할 때까지) 자동으로 재시작됩니다. 이 정책은 재시작을 수행하는 하위 시스템만 설정합니다.

Never 정책에서는 작업 컨트롤러에서 재시작을 수행합니다. 시도할 때마다 작업 컨트롤러에서 작업 상태의 실패 수를 늘리고 새 Pod를 생성합니다. 즉 실패할 때마다 Pod 수가 증가합니다.

OnFailure 정책에서는 kubelet에서 재시작을 수행합니다. 시도할 때마다 작업 상태의 실패 횟수가 늘어나는 것은 아닙니다. 또한 kubelet은 동일한 노드에서 Pod를 시작하여 실패한 작업을 재시도합니다.