Kubernetes - 如何只 运行 工作一次
Kubernetes - how to run job only once
我有一个基于 kubernetes 网站示例的工作定义。
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-timeout-6
spec:
activeDeadlineSeconds: 30
completions: 1
parallelism: 1
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["exit", "1"]
restartPolicy: Never
我想要运行这个作业一次,如果失败不再重新开始。使用 comand exit 1 kubernetes 尝试 运行 new pod 获取 exit 0 代码,直到达到 activeDeadlineSeconds 超时。怎样才能避免呢?我想 运行 在 kubernetes 中构建命令来检查编译,如果编译失败,我将得到不同于 0 的退出代码。我不想再次 运行 编译。
可能吗?怎么样?
如果您想要一个一次性的命令运行器,您可能应该创建裸 pod,因为该作业将尝试执行命令直到它成功或满足活动截止日期。
只需从您的模板创建广告连播:
apiVersion: v1
kind: Pod
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["exit", "1"]
restartPolicy: Never
遗憾的是,目前没有办法阻止作业控制器在失败时重新生成新的 pods,但 kubernetes 社区正在研究解决方案,请参阅:
"Backoff policy and failed pod limit" https://github.com/kubernetes/community/pull/583
现在这可以通过设置 backoffLimit: 0
来告诉控制器进行 0 次重试。默认为 6
我有一个基于 kubernetes 网站示例的工作定义。
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-timeout-6
spec:
activeDeadlineSeconds: 30
completions: 1
parallelism: 1
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["exit", "1"]
restartPolicy: Never
我想要运行这个作业一次,如果失败不再重新开始。使用 comand exit 1 kubernetes 尝试 运行 new pod 获取 exit 0 代码,直到达到 activeDeadlineSeconds 超时。怎样才能避免呢?我想 运行 在 kubernetes 中构建命令来检查编译,如果编译失败,我将得到不同于 0 的退出代码。我不想再次 运行 编译。
可能吗?怎么样?
如果您想要一个一次性的命令运行器,您可能应该创建裸 pod,因为该作业将尝试执行命令直到它成功或满足活动截止日期。
只需从您的模板创建广告连播:
apiVersion: v1
kind: Pod
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["exit", "1"]
restartPolicy: Never
遗憾的是,目前没有办法阻止作业控制器在失败时重新生成新的 pods,但 kubernetes 社区正在研究解决方案,请参阅:
"Backoff policy and failed pod limit" https://github.com/kubernetes/community/pull/583
现在这可以通过设置 backoffLimit: 0
来告诉控制器进行 0 次重试。默认为 6