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
-
작업이 병렬로 실행해야 하는 Pod 복제본 수에 대한 선택적 값입니다. 기본값은
completions
입니다. - 작업이 완료된 것으로 표시하는 데 필요한 성공적인 Pod 완료 횟수에 대한 선택적 값입니다. 기본값은 1입니다.
- 컨트롤러에서 생성하는 Pod용 템플릿입니다.
- 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=Never
는 restartPolicy와 동일한 동작을 생성합니다. OnFailure
또는 --restart=OnFailure
. 즉 작업이 실패하면 작업이 성공할 때까지 (또는 작업을 수동으로 삭제할 때까지) 자동으로 재시작됩니다. 이 정책은 재시작을 수행하는 하위 시스템만 설정합니다.
Never
정책에서는 작업 컨트롤러에서 재시작을 수행합니다. 시도할 때마다 작업 컨트롤러에서 작업 상태의 실패 수를 늘리고 새 Pod를 생성합니다. 즉 실패할 때마다 Pod 수가 증가합니다.
OnFailure
정책에서는 kubelet에서 재시작을 수행합니다. 시도할 때마다 작업 상태의 실패 횟수가 늘어나는 것은 아닙니다. 또한 kubelet은 동일한 노드에서 Pod를 시작하여 실패한 작업을 재시도합니다.