我有一个在 GKE 上运行并运行 Cucumber JVM 测试的 Kubernetes Cronjob。如果由于断言失败、某些资源不可用等原因导致 Step 失败,Cucumber 会正确抛出异常,导致 Cronjob 作业失败,并且 Kubernetes pod 的状态更改为ERROR
. 这会导致创建一个新的 pod,它会再次尝试运行相同的 Cucumber 测试,但会再次失败并再次重试。
我不希望任何这些重试发生。如果 Cronjob 作业失败,我希望它保持失败状态并且根本不重试。基于此,我已经尝试过设置backoffLimit: 0
with restartPolicy: Never
in combination with concurrencyPolicy: Forbid
,但它仍然通过创建新的 pod 并再次运行测试来重试。
我错过了什么?这是我的 Cronjob 的 kube 清单:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: quality-apatha
namespace: default
labels:
app: quality-apatha
spec:
schedule: "*/1 * * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
backoffLimit: 0
template:
spec:
containers:
- name: quality-apatha
image: FOO-IMAGE-PATH
imagePullPolicy: "Always"
resources:
limits:
cpu: 500m
memory: 512Mi
env:
- name: FOO
value: BAR
volumeMounts:
- name: FOO
mountPath: BAR
args:
- java
- -cp
- qe_java.job.jar:qe_java-1.0-SNAPSHOT-tests.jar
- org.junit.runner.JUnitCore
- com.liveramp.qe_java.RunCucumberTest
restartPolicy: Never
volumes:
- name: FOO
secret:
secretName: BAR
我可以使用其他 KubernetesKind
来停止重试吗?
谢谢!