我有一个基于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的退出代码。我不想再次运行编译。
可能吗?怎么样?
如果你想要一个try命令运行器,你可能应该创建裸pod,因为作业将尝试执行命令,直到它成功或满足活动截止日期。
只需从模板中创建pod:
apiVersion: v1
kind: Pod
metadata:
name: pi
spec:
containers:
- name: pi
image: perl
command: ["exit", "1"]
restartPolicy: Never
到目前为止,这可以通过设置backoffLimit: 0
来告诉控制器进行0次重试。默认值为6
遗憾的是,目前无法阻止作业控制器在失败时重新生成新的pod,但kubernetes社区正在研究解决方案,请参阅:
“退避策略和失败的pod限制”https://github.com/kubernetes/community/pull/583