我有一个基于kubernetes网站上的例子的工作定义。
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-timeout-6
spec:
activeDeadlineSeconds: 30
completions: 1
paralleism: 1
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["exit", "1"]
restartPolicy: Never
我想运行此作业一次,如果失败则不重启。使用comand退出1 kubernetes尝试运行新pod以获取exit 0代码,直到达到activeDeadlineSeconds超时。怎么可以避免呢?我想在kubernetes中运行构建命令来检查编译,如果编译失败,我将得到不同于0的退出代码。我不想再次运行编译。
有可能吗?怎么样?
答案 0 :(得分:14)
如果你想要一个try命令运行器,你可能应该创建裸pod,因为该作业将尝试执行命令,直到它成功或满足活动截止日期。
只需从模板中创建广告连拍:
apiVersion: v1
kind: Pod
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["exit", "1"]
restartPolicy: Never
答案 1 :(得分:6)
现在,可以通过设置backoffLimit: 0
来实现,该设置告诉控制器进行0次重试。默认值为6
答案 2 :(得分:1)
可悲的是,目前无法阻止作业控制器在失败时重新生成新的pod,但kubernetes社区正在研究解决方案,请参阅:
“退避策略和失败的容器限制”https://github.com/kubernetes/community/pull/583