kubernetes - Helm 失败的测试作业不断重启
问题描述
我使用 helm 命令在集群中运行 django 单元测试。它们已正确启动,但当单元测试失败时,kubernetes 会不断地重新启动它们,尽管“restartPolicy: Never”。
如何强制 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
...
解决方案
看看backoffLimit选项。
Pod 退避失败策略
在某些情况下,由于配置中的逻辑错误等原因,您希望在重试后使作业失败。为此,请设置 .spec.backoffLimit 以指定重试次数,然后再将作业视为失败。回退限制默认设置为 6。
我没有尝试过,但我相信它会让你得到你想要的行为。
spec:
containers:
- name: main
image: {{ template "myproject.django.image" . }}
args:
- test
backoffLimit: 1
restartPolicy: Never
您可能还会发现以下帖子很有用: 了解 Kubernetes Job 中的 backoffLimit
推荐阅读
- linux - ERRR:无法从 baseport = 54321 找到 /168.2.4.54 的空闲端口
- azure - VMExtensionProvisioningError:超时
- python - 将嵌入在 C 中的 Word2Vec 转换为 Python 的 Gensim Word2vec
- javascript - 节点服务器,html输入null
- reactjs - Redux Thunk:动作必须是普通对象
- c - 如何在 C 中获取不同时区的 Epoch 日期和时间?
- c++11 - std::vector.push_back(std::move(foo)) 有意义吗?
- java - 无法使用 marklogic-jena api 连接到 marklogic
- android - 在使用 android marshmallow 运行的 BBB 上没有显示
- java - 使用 Apache POI 和 Pdfbox 从 .docx 创建 PDF 时丢失样式