13장. Job [batch/v1]
- 설명
- job은 단일 작업의 구성을 나타냅니다.
- 유형
-
object
13.1. 사양
속성 | 유형 | 설명 |
---|---|---|
|
| APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 표준 오브젝트의 메타데이터입니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| JobSpec은 작업 실행이 어떻게 표시되는지 설명합니다. |
|
| JobStatus는 작업의 현재 상태를 나타냅니다. |
13.1.1. .spec
- 설명
- JobSpec은 작업 실행이 어떻게 표시되는지 설명합니다.
- 유형
-
object
- 필수 항목
-
템플릿
-
속성 | 유형 | 설명 |
---|---|---|
|
| 작업을 종료하기 전에 작업이 지속적으로 활성화될 수 있는 startTime에 대한 시간(초)을 지정합니다. value는 양의 정수여야 합니다. 작업이 일시 중지된 경우(생성 또는 업데이트를 통해) 작업을 다시 시작할 때 이 타이머는 효과적으로 중지되고 재설정됩니다. |
|
| 이 작업을 실패로 표시하기 전에 재시도 횟수를 지정합니다. 기본값은 6입니다. |
|
|
이 인덱스를 실패로 표시하기 전에 인덱스 내의 재시도 횟수에 대한 제한을 지정합니다. 활성화된 경우 인덱스당 실패 수가 Pod의 batch.kubernetes.io/job-index-failure-count 주석에 유지됩니다. 작업의 completionMode=Indexed만 설정할 수 있으며 Pod의 재시작 정책은 Never입니다. 이 필드는 변경할 수 없습니다. 이 필드는 베타 수준입니다. |
|
|
completionMode는 Pod 완료 방법을 지정합니다.
나중에 더 많은 완료 모드를 추가할 수 있습니다. 작업 컨트롤러에서 인식하지 못하는 모드를 관찰하는 경우 버전 스큐로 인해 업그레이드 중에 가능한 경우 컨트롤러는 작업에 대한 업데이트를 건너뜁니다.
가능한 enum 값: - |
|
| 작업을 실행해야 하는 성공적으로 완료된 Pod 수를 지정합니다. null로 설정하면 Pod의 성공이 모든 Pod의 성공 신호를 보내고 병렬 처리가 양수 값을 갖도록 허용합니다. 1로 설정하면 병렬 처리가 1로 제한되고 해당 Pod의 성공이 작업이 성공했음을 나타냅니다. 자세한 내용은 https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ |
|
|
managedBy 필드는 작업을 관리하는 컨트롤러를 나타냅니다. k8s 작업 컨트롤러는 이 필드가 전혀 없거나 필드 값이 예약된 문자열 이 필드는 알파 수준입니다. 기능 게이트 JobManagedBy가 활성화된 경우 작업 컨트롤러에서 필드 설정을 허용합니다(기본적으로 비활성화됨). |
|
|
manualSelector는 Pod 라벨 및 Pod 선택기 생성을 제어합니다. 수행 중인 작업을 확신하지 않는 한 |
|
|
backoffLimitPerIndex가 설정된 경우 작업을 실패로 표시하기 전에 실패한 최대 인덱스 수를 지정합니다. 실패한 인덱스 수가 이 수를 초과하면 전체 작업이 Failed로 표시되고 실행이 종료됩니다. null로 남아 있으면 작업은 모든 인덱스를 계속 실행하고 |
|
| 작업이 지정된 시간에 실행해야 하는 최대 Pod 수를 지정합니다. steady 상태에서 실행되는 실제 Pod 수는 (.spec.completions - .status.successful) < .spec.parallelism)인 경우, 즉, 수행할 작업이 최대 병렬 처리보다 적을 때 이 수보다 적습니다. 자세한 내용은 https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ |
|
| PodFailurePolicy는 실패한 Pod가 backoffLimit에 미치는 영향을 설명합니다. |
|
| podReplacementPolicy는 교체 Pod를 생성할 시기를 지정합니다. 가능한 값은 다음과 같습니다. - TerminatingOrFailed는 Pod를 종료할 때( metadata.deletionTimestamp가 있는 경우) 또는 failed를 다시 생성한다는 것을 의미합니다. - 이전에 생성된 Pod가 완전히 종료될 때까지 기다리는 것은 대체 Pod를 생성하기 전에 실패 또는 Succeeded를 의미합니다. podFailurePolicy를 사용하는 경우 Failed가 허용된 유일한 값입니다. podFailurePolicy를 사용하지 않는 경우 TerminatingOrFailed 및 Failed는 허용됩니다. 베타 필드입니다. 이를 사용하려면 JobPodReplacementPolicy 기능 토글을 활성화합니다. 기본적으로 활성화되어 있습니다.
가능한 enum 값: - |
| Pod 수와 일치해야 하는 Pod에 대한 라벨 쿼리입니다. 일반적으로 시스템은 이 필드를 설정합니다. 자세한 내용은 https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors | |
|
| SuccessPolicy는 일부 인덱스의 성공 여부에 따라 작업을 성공으로 선언할 수 있는 시기를 설명합니다. |
|
| suspend는 작업 컨트롤러에서 Pod를 생성해야 하는지 여부를 지정합니다. suspend를 true로 설정하여 작업이 생성되면 작업 컨트롤러에서 Pod를 생성하지 않습니다. 생성 후 작업이 일시 중지되면(즉, 플래그가 false에서 true로 전환됨) 작업 컨트롤러에서 이 작업과 연결된 활성 Pod를 모두 삭제합니다. 사용자는 이를 정상적으로 처리하도록 워크로드를 설계해야 합니다. 작업을 일시 중지하면 작업의 StartTime 필드가 재설정되고 ActiveDeadlineSeconds 타이머도 효과적으로 재설정됩니다. 기본값은 false입니다. |
| 작업을 실행할 때 생성할 Pod를 설명합니다. 허용된 유일한 template.spec.restartPolicy 값은 "Never" 또는 "OnFailure"입니다. 자세한 내용은 https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ | |
|
| ttlSecondsAfterFinished는 완료된 작업(완료 또는 실패)의 수명을 제한합니다. 작업이 완료된 후 ttlSecondsAfterFinished 필드가 설정되면 자동으로 삭제할 수 있습니다. 작업이 삭제되면 해당 라이프사이클 보장(예: 종료자)이 적용됩니다. 이 필드가 설정되지 않으면 작업이 자동으로 삭제되지 않습니다. 이 필드를 0으로 설정하면 작업이 완료된 직후에 삭제할 수 있습니다. |
13.1.2. .spec.podFailurePolicy
- 설명
- PodFailurePolicy는 실패한 Pod가 backoffLimit에 미치는 영향을 설명합니다.
- 유형
-
object
- 필수 항목
-
규칙
-
속성 | 유형 | 설명 |
---|---|---|
|
| Pod 실패 정책 규칙 목록입니다. 규칙은 순서대로 평가됩니다. 규칙이 Pod 실패와 일치하면 나머지 규칙은 무시됩니다. Pod 실패와 일치하는 규칙이 없으면 기본 처리가 적용됩니다. Pod 실패 카운터가 증가되고 backoffLimit에 대해 확인됩니다. 최대 20개의 요소가 허용됩니다. |
|
| PodFailurePolicyRule는 요구사항이 충족될 때 Pod 실패를 처리하는 방법을 설명합니다. onExitCodes 및 onPodConditions 중 하나는 각 규칙에서 사용할 수 있지만 둘 다 사용할 수 없습니다. |
13.1.3. .spec.podFailurePolicy.rules
- 설명
- Pod 실패 정책 규칙 목록입니다. 규칙은 순서대로 평가됩니다. 규칙이 Pod 실패와 일치하면 나머지 규칙은 무시됩니다. Pod 실패와 일치하는 규칙이 없으면 기본 처리가 적용됩니다. Pod 실패 카운터가 증가되고 backoffLimit에 대해 확인됩니다. 최대 20개의 요소가 허용됩니다.
- 유형
-
array
13.1.4. .spec.podFailurePolicy.rules[]
- 설명
- PodFailurePolicyRule는 요구사항이 충족될 때 Pod 실패를 처리하는 방법을 설명합니다. onExitCodes 및 onPodConditions 중 하나는 각 규칙에서 사용할 수 있지만 둘 다 사용할 수 없습니다.
- 유형
-
object
- 필수 항목
-
작업
-
속성 | 유형 | 설명 |
---|---|---|
|
| 요구 사항이 충족되면 Pod 실패 시 수행된 작업을 지정합니다. 가능한 값은 다음과 같습니다.
- FailJob: Pod의 작업이 Failed로 표시되고 실행 중인 모든 Pod가 종료됩니다. - FailIndex:는 Pod의 인덱스가 Failed로 표시되고 재시작되지 않음을 나타냅니다. 이 값은 베타 수준입니다.
가능한 enum 값: - |
|
| PodFailurePolicyOnExitCodesRequirement는 컨테이너 종료 코드를 기반으로 실패한 Pod를 처리하기 위한 요구 사항을 설명합니다. 특히 Pod 상태의 .status.containerStatuses 및 .status.initContainerStatuses 필드에 각각 표시되는 각 앱 컨테이너 및 init 컨테이너 상태에 대해 .state.terminated.exitCode를 조회합니다. 성공적으로 완료된 컨테이너(코드 0)는 요구 사항 확인에서 제외됩니다. |
|
| Pod 조건에 대한 요구 사항을 나타냅니다. 요구 사항은 Pod 상태 패턴 목록으로 표시됩니다. 하나 이상의 패턴이 실제 Pod 조건과 일치하는 경우 요구 사항이 충족됩니다. 최대 20개의 요소가 허용됩니다. |
|
| PodFailurePolicyOnPodConditionsPattern은 실제 Pod 상태 유형과 일치하는 패턴을 설명합니다. |
13.1.5. .spec.podFailurePolicy.rules[].onExitCodes
- 설명
- PodFailurePolicyOnExitCodesRequirement는 컨테이너 종료 코드를 기반으로 실패한 Pod를 처리하기 위한 요구 사항을 설명합니다. 특히 Pod 상태의 .status.containerStatuses 및 .status.initContainerStatuses 필드에 각각 표시되는 각 앱 컨테이너 및 init 컨테이너 상태에 대해 .state.terminated.exitCode를 조회합니다. 성공적으로 완료된 컨테이너(코드 0)는 요구 사항 확인에서 제외됩니다.
- 유형
-
object
- 필수 항목
-
operator
-
값
-
속성 | 유형 | 설명 |
---|---|---|
|
| 지정된 이름으로 컨테이너의 종료 코드를 검사를 제한합니다. null인 경우 규칙이 모든 컨테이너에 적용됩니다. 지정하면 Pod 템플릿의 컨테이너 또는 initContainer 이름과 일치해야 합니다. |
|
| 컨테이너 종료 코드와 지정된 값 간의 관계를 나타냅니다. 성공적으로 완료된 컨테이너(코드 0)는 요구 사항 확인에서 제외됩니다. 가능한 값은 다음과 같습니다. - in: 하나 이상의 컨테이너 종료 코드( 'containerName' 필드에 의해 제한되지 않은 컨테이너가 여러 개 있음)가 지정된 값 세트에 있는 경우 여러 컨테이너가 충족됩니다. - NotIn: 컨테이너 종료 코드가 하나 이상 있는 경우 요구 사항이 충족됩니다('containerName' 필드에 의해 제한되지 않은 여러 컨테이너가 있는 경우). 추가 값은 나중에 추가되는 것으로 간주됩니다. 클라이언트는 요구 사항이 충족되지 않았음을 가정하여 알 수 없는 Operator에 반응해야 합니다.
가능한 열거 값: - |
|
| 값 집합을 지정합니다. 반환된 각 컨테이너 종료 코드(여러 컨테이너의 경우 여러 개)가 Operator와 관련하여 이 값 집합에 대해 확인됩니다. 값 목록을 정렬해야 하며 중복을 포함하지 않아야 합니다. '0' 값은 In 연산자에 사용할 수 없습니다. 하나 이상의 요소가 필요합니다. 최대 255개의 요소가 허용됩니다. |
13.1.6. .spec.podFailurePolicy.rules[].onPodConditions
- 설명
- Pod 조건에 대한 요구 사항을 나타냅니다. 요구 사항은 Pod 상태 패턴 목록으로 표시됩니다. 하나 이상의 패턴이 실제 Pod 조건과 일치하는 경우 요구 사항이 충족됩니다. 최대 20개의 요소가 허용됩니다.
- 유형
-
array
13.1.7. .spec.podFailurePolicy.rules[].onPodConditions[]
- 설명
- PodFailurePolicyOnPodConditionsPattern은 실제 Pod 상태 유형과 일치하는 패턴을 설명합니다.
- 유형
-
object
- 필수 항목
-
type
-
status
-
속성 | 유형 | 설명 |
---|---|---|
|
| 필요한 Pod 상태 상태를 지정합니다. Pod 조건과 일치하려면 지정된 상태가 Pod 조건 상태와 같아야 합니다. 기본값은 True입니다. |
|
| 필요한 Pod 조건 유형을 지정합니다. Pod 조건과 일치하려면 지정된 유형이 Pod 조건 유형과 같아야 합니다. |
13.1.8. .spec.successPolicy
- 설명
- SuccessPolicy는 일부 인덱스의 성공 여부에 따라 작업을 성공으로 선언할 수 있는 시기를 설명합니다.
- 유형
-
object
- 필수 항목
-
규칙
-
속성 | 유형 | 설명 |
---|---|---|
|
|
규칙은 |
|
| SuccessPolicyRule은 작업을 성공으로 선언하는 규칙을 설명합니다. 각 규칙에는 "succeededIndexes" 또는 "succeededCount" 중 하나가 지정되어야 합니다. |
13.1.9. .spec.successPolicy.rules
- 설명
-
규칙은
.status.succeeded >= .spec.completions .spec.completions
이전의 작업 선언에 대한 대체 규칙 목록을 나타냅니다. 규칙이 충족되면 "SucceedededCriteriaMet" 조건이 추가되고 lingering Pod가 제거됩니다. 이러한 작업의 터미널 상태에는 "완료" 조건이 있습니다. 또한 이러한 규칙은 순서대로 평가됩니다. 작업이 규칙 중 하나를 충족하면 다른 규칙은 무시됩니다. 최대 20개의 요소가 허용됩니다. - 유형
-
array
13.1.10. .spec.successPolicy.rules[]
- 설명
- SuccessPolicyRule은 작업을 성공으로 선언하는 규칙을 설명합니다. 각 규칙에는 "succeededIndexes" 또는 "succeededCount" 중 하나가 지정되어야 합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| succeededCount는 작업에 대해 성공한 인덱스 집합의 실제 필요한 최소 크기를 지정합니다. succeededCount가 succeededIndexes와 함께 사용하면 검사가 succeededIndexes에 의해 지정된 인덱스 세트로만 제한됩니다. 예를 들어, succeededIndexes가 "1-4"이고, succeededCount는 "3"이고, 완료된 인덱스는 "1", "3" 및 "5"인 경우, "1" 및 "3" 인덱스만 해당 규칙에서 고려되기 때문에 작업이 성공으로 선언되지 않습니다. 이 필드가 null이면 기본값을 설정하지 않으며 언제든지 평가되지 않습니다. 이 값을 지정하면 양의 정수여야 합니다. |
|
| succeededIndexes는 작업에 대해 성공한 인덱스의 실제 집합에 포함되어야 하는 인덱스 집합을 지정합니다. 인덱스 목록은 0에서 ".spec.completions-1" 사이여야 하며 중복을 포함하지 않아야 합니다. 하나 이상의 요소가 필요합니다. 인덱스는 쉼표로 구분된 간격으로 표시됩니다. 간격은 10진수 정수 또는 하이픈으로 구분된 10진수 정수 쌍일 수 있습니다. 숫자는 하이픈으로 구분된 시리즈의 첫 번째 및 마지막 요소로 표시되는 에 나열됩니다. 예를 들어 완료된 인덱스가 1, 3, 4, 5 및 7인 경우 해당 인덱스가 "1,3-5,7"으로 표시됩니다. 이 필드가 null이면 이 필드는 기본값으로 설정되지 않으며 언제든지 평가되지 않습니다. |
13.1.11. .status
- 설명
- JobStatus는 작업의 현재 상태를 나타냅니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 종료되지 않은 보류 중 Pod 및 실행 중인 Pod 수입니다( deleteTimestamp 제외). 완료된 작업의 값이 0입니다. |
|
| completedIndexes는 텍스트 형식으로 .spec.completionMode = "Indexed"인 경우 완료된 인덱스를 보유합니다. 인덱스는 쉼표로 구분된 10진수 정수로 표시됩니다. 숫자가 늘어나는 순서로 나열됩니다. 세 개 이상의 연속 숫자가 압축되고 시리즈의 첫 번째 요소와 마지막 요소로 표현되며 하이픈으로 구분됩니다. 예를 들어 완료된 인덱스가 1, 3, 4, 5 및 7인 경우 해당 인덱스가 "1,3-5,7"으로 표시됩니다. |
| 작업이 완료된 시간을 나타냅니다. 별도의 작업에 대해 수행 순서에 따라 설정되는 것은 보장되지 않습니다. RFC3339 형식으로 표시되고 UTC로 표시됩니다. 완료 시간은 작업이 성공적으로 완료되면 설정됩니다. 값은 업데이트하거나 제거할 수 없습니다. 값은 startTime 필드와 동일한 또는 이후의 시점을 나타냅니다. | |
|
| 오브젝트의 현재 상태에 대한 사용 가능한 최신 관찰입니다. 작업이 실패하면 조건 중 하나에 "Failed" 및 status true가 있습니다. 작업이 일시 중지되면 조건 중 하나에 "Suspended" 및 status true가 있습니다. 작업이 다시 시작되면 이 조건의 상태는 false가 됩니다. 작업이 완료되면 조건 중 하나에 "Complete" 및 status true가 있습니다. "완료" 또는 "실패" 중 하나를 터미널 조건에 있을 때 작업이 완료된 것으로 간주됩니다. 작업에는 "완료" 및 "실패" 조건이 모두 포함될 수 없습니다. 또한 "Complete" 및 "FailureTarget" 조건을 사용할 수 없습니다. "Complete", "Failed" 및 "FailureTarget" 조건은 비활성화할 수 없습니다. 자세한 내용은 https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ |
|
| JobCondition은 작업의 현재 상태를 설명합니다. |
|
| 실패한 Pod 수입니다. 값이 단조롭게 증가합니다. |
|
|
spec.backoffLimitPerIndex가 설정된 경우 FailedIndexes에 실패한 인덱스가 들어 있습니다. 인덱스는
이 필드는 베타 수준입니다. |
|
| Ready 조건이 있는 Pod 수입니다. |
| 작업 컨트롤러가 작업 처리를 시작한 시간을 나타냅니다. 작업이 일시 중지된 상태에서 생성되면 이 필드는 처음 다시 시작할 때까지 설정되지 않습니다. 이 필드는 일시 중지에서 작업을 다시 시작할 때마다 재설정됩니다. RFC3339 형식으로 표시되고 UTC로 표시됩니다. 설정한 후에는 작업이 일시 중단된 경우에만 필드를 제거할 수 있습니다. 작업이 일시 중지되거나 완료되지 않는 동안 필드를 수정할 수 없습니다. | |
|
| 성공 단계에 도달한 Pod 수입니다. 값은 지정된 사양에 대해 단조적으로 증가합니다. 그러나 탄력적 인덱싱된 작업의 축소에 대한 반응이 줄어들 수 있습니다. |
|
| 종료되는 Pod 수입니다(단계 보류 단계 또는 실행 중이고 deletionTimestamp가 있음). 이 필드는 베타 수준입니다. 기능 게이트 JobPodReplacementPolicy가 활성화된 경우 작업 컨트롤러에서 필드를 채웁니다(기본적으로 사용 가능). |
|
| UncountedTerminatedPods는 종료되었지만 작업 상태 카운터에서 고려하지 않은 Pod의 UID를 보유하고 있습니다. |
13.1.12. .status.conditions
- 설명
오브젝트의 현재 상태에 대한 사용 가능한 최신 관찰입니다. 작업이 실패하면 조건 중 하나에 "Failed" 및 status true가 있습니다. 작업이 일시 중지되면 조건 중 하나에 "Suspended" 및 status true가 있습니다. 작업이 다시 시작되면 이 조건의 상태는 false가 됩니다. 작업이 완료되면 조건 중 하나에 "Complete" 및 status true가 있습니다.
"완료" 또는 "실패" 중 하나를 터미널 조건에 있을 때 작업이 완료된 것으로 간주됩니다. 작업에는 "완료" 및 "실패" 조건이 모두 포함될 수 없습니다. 또한 "Complete" 및 "FailureTarget" 조건을 사용할 수 없습니다. "Complete", "Failed" 및 "FailureTarget" 조건은 비활성화할 수 없습니다.
자세한 내용은 https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
- 유형
-
array
13.1.13. .status.conditions[]
- 설명
- JobCondition은 작업의 현재 상태를 설명합니다.
- 유형
-
object
- 필수 항목
-
type
-
status
-
속성 | 유형 | 설명 |
---|---|---|
| 조건을 마지막으로 확인한 시간입니다. | |
| 상태가 다른 상태에서 다른 상태로 전환되는 마지막 시간입니다. | |
|
| 마지막 전환에 대한 세부 정보를 나타내는 사람이 읽을 수 있는 메시지입니다. |
|
| 조건의 마지막 전환 이유 |
|
| 조건의 상태, True, False, 알 수 없음. |
|
| 작업 조건 유형, 완료 또는 실패. |
13.1.14. .status.uncountedTerminatedPods
- 설명
- UncountedTerminatedPods는 종료되었지만 작업 상태 카운터에서 고려하지 않은 Pod의 UID를 보유하고 있습니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| failed에는 실패한 Pod의 UID가 포함되어 있습니다. |
|
| succeeded에는 성공한 Pod의 UID가 있습니다. |