文档,https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/job/
在Kubernetes(K8S)中,要让Pod运行一次并完成一次性任务,可以使用Job资源。Job是Kubernetes中用于运行一次性任务的工作负载API对象。它创建一个或多个Pod,并确保指定数量的Pod成功终止。当Pod成功完成后,Job将跟踪成功完成的情况。当达到指定的成功完成次数时,任务(即Job)就完成了
yaml
apiVersion: batch/v1
kind: Job
metadata:
name: my-one-time-job
spec:
completions: 1 # 指定需要成功完成的任务数量,默认为1
parallelism: 1 # 指定并发运行的任务数量,默认也为1,即一次仅运行一个Pod
backoffLimit: 4 # 在Pod重试失败后放弃任务前的最大重试次数,默认为6
template:
spec:
restartPolicy: OnFailure # 对于一次性任务,推荐设置为OnFailure,这样只有任务失败时才会重试
containers:
- name: my-container
image: my-image:latest
command: ["./run-my-task.sh"] # 执行脚本或命令,这里假设有一个运行一次性任务的脚本
apiVersion: batch/v1
kind: Job
metadata:
name: my-one-time-job
spec:
completions: 1 # 指定需要成功完成的任务数量,默认为1
parallelism: 1 # 指定并发运行的任务数量,默认也为1,即一次仅运行一个Pod
backoffLimit: 4 # 在Pod重试失败后放弃任务前的最大重试次数,默认为6
template:
spec:
restartPolicy: OnFailure # 对于一次性任务,推荐设置为OnFailure,这样只有任务失败时才会重试
containers:
- name: my-container
image: my-image:latest
command: ["./run-my-task.sh"] # 执行脚本或命令,这里假设有一个运行一次性任务的脚本
区别