Kubernetes Job: Difference between revisions
(One intermediate revision by the same user not shown) | |||
Line 66: | Line 66: | ||
{{External|https://kubernetes.io/docs/concepts/workloads/controllers/job/#alternatives}} | {{External|https://kubernetes.io/docs/concepts/workloads/controllers/job/#alternatives}} | ||
=Set Annotations or Labels on the Job-generated Pods= | =Set Annotations or Labels on the Job-generated Pods= | ||
The labels and annotations set in the <code>.spec.template.metadata</code> section of the job declaration will be injected into the created pods: | |||
<syntaxhighlight lang='yaml'> | |||
apiVersion: batch/v1 | |||
kind: Job | |||
spec: | |||
template: | |||
metadata: | |||
labels: | |||
color: blue | |||
annotations: | |||
example.com/color: red | |||
spec: | |||
[...] | |||
</syntaxhighlight> |
Latest revision as of 21:25, 12 December 2023
External
Internal
Overview
A Kubernetes Job is a workload resource that can be used to start and manage Pods to successful completion.
A Pod is considered completed, and thus its execution counted against the completion counter only if finishes successfully. This counter can be configured with .spec.completions
. When the specified number of successful completions is reached, the Job is complete. The Job will attempt to restart failed Pods, which don't count against successful executions. The number of retires until the attempts are dropped can be configured with .spec.backoffLimit
. For example, to configure a Job to run a Pod once, and give up immediately if it fails, use:
kind: Job
spec:
completions: 1
backoffLimit: 0
[...]
More details on a Job's life cycle is available in the Job Lifecycle section.
The Pods managed by a Job will carry a job-name
label with the name of the job, and also a controller-uid
label.
Pods can be executed in parallel. The Parallel Execution section provides more details on that.
If the Job needs to execute on a schedule, a CronJob is a better tool.
Manifest
Get the Log of a Completed Job
kubectl -n <namespace> logs job/<job-name>
kubectl -n test logs job/test-job
Job Lifecycle
Pod and Container Failures
Completion
Suspending a Job
Termination and Cleanup
Clean up Finished Jobs Automatically
Jobs that have finished, either "Complete" or "Failed" can be automatically be deleted by using the TTL mechanism provided by the [TTL Controller ]. Set the .spec.ttlSecondsAfterFinished
field in the job manifest. If the field is set to 0, the Job will be eligible to be automatically deleted immediately after it finishes.
apiVersion: batch/v1
kind: Job
spec:
ttlSecondsAfterFinished: 100
...
Parallel Execution
Job Alternatives
Set Annotations or Labels on the Job-generated Pods
The labels and annotations set in the .spec.template.metadata
section of the job declaration will be injected into the created pods:
apiVersion: batch/v1
kind: Job
spec:
template:
metadata:
labels:
color: blue
annotations:
example.com/color: red
spec:
[...]