我使用helm命令在集群中运行django单元测试。 它们已正确启动,但是当单元测试失败时,尽管“ restartPolicy:从不”,但kubernetes仍然一次又一次地重新启动它们。
如何强制kubernetes / helm仅运行一次单元测试(是否失败)?
django-test.yml:
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ .Release.Name }}-django-test"
labels:
app: {{ template "myproject.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
annotations:
"helm.sh/hook": test
spec:
template:
metadata:
name: "{{ .Release.Name }}-django-test"
spec:
containers:
- name: main
image: {{ template "myproject.django.image" . }}
args:
- test
restartPolicy: Never
➜ ~ kubectl get pods --namespace mynamespace
NAME READY STATUS RESTARTS AGE
myrel-django-install-jhspp 0/1 Completed 0 78m
myrel-django-test-6dzrq 0/1 Error 0 47m
myrel-django-test-7hpwm 0/1 Error 0 67m
myrel-django-test-nd74f 0/1 Error 0 73m
myrel-django-test-np5qd 0/1 Error 0 39m
myrel-django-test-nqjdw 0/1 Error 0 60m
myrel-django-test-tjbhc 0/1 Error 0 53m
...
答案 0 :(得分:1)
看看backoffLimit选项。
Pod后退失败策略
在某些情况下,您想要在完成一定数量的工作后失败 由于配置等逻辑错误而重试。为此,请设置 .spec.backoffLimit在考虑之前指定重试次数 作业失败。退避限制默认设置为6。
我还没有尝试过,但是我相信它将为您带来想要的行为。
spec:
containers:
- name: main
image: {{ template "myproject.django.image" . }}
args:
- test
backoffLimit: 1
restartPolicy: Never
您可能还会发现以下有用的帖子: Understanding backoffLimit in Kubernetes Job