有可能吗?如果总是失败,如何限制kubernetes作业以创建最大数量的吊舱?
作为我们公司的QA,我是kubernetes的日常用户,我们使用kubernetes作业创建性能测试吊舱。这份工作的一个优点是 创建一个作业对象,以便可靠地运行一个Pod完成 但在我们的测试中,如果以前的pod失败,这个特性将创建无限的pod,这将占用我们团队共享集群的资源,删除这样的pod将花费很多时间。请参见此图: 当前作业清单如下所示:有可能吗?如果总是失败,如何限制kubernetes作业以创建最大数量的吊舱?,kubernetes,kubernetes-pod,kubernetes-jobs,Kubernetes,Kubernetes Pod,Kubernetes Jobs,作为我们公司的QA,我是kubernetes的日常用户,我们使用kubernetes作业创建性能测试吊舱。这份工作的一个优点是 创建一个作业对象,以便可靠地运行一个Pod完成 但在我们的测试中,如果以前的pod失败,这个特性将创建无限的pod,这将占用我们团队共享集群的资源,删除这样的pod将花费很多时间。请参见此图: 当前作业清单如下所示: { "apiVersion": "batch/v1", "kind": "Job", "metadata": { "name"
{
"apiVersion": "batch/v1",
"kind": "Job",
"metadata": {
"name": "upgradeperf",
"namespace": "ntg6-grpc26-tts"
},
"spec": {
"template": {
"spec": {
"containers": [
{
"name": "upgradeperfjob",
"image":
"mycompany.com:5000/ncs-cd-qa/upgradeperf:0.1.1",
"command": [
"python",
"/jmeterwork/jmeter.py",
"-gu",
"git@gitlab-pri-eastus2.dev.mycompany.net:mobility-ncs-tools/tts-cdqa-tool.git",
"-gb",
"upgradeperf",
"-t",
"JMeter/testcases/ttssvc/JMeterTestPlan_ttssvc_cmpsize.jmx",
"-JtestDataFile",
"JMeter/testcases/ttssvc/testData/avaml_opus.csv",
"-JthreadNum",
"3",
"-JthreadLoopCount",
"1500",
"-JresultsFile",
"results_upgradeperf_cavaml_opus_t3_l1500.csv",
"-Jhost",
"mtl-blade32-03.mycompany.com",
"-Jport",
"28416"
]
}
],
"restartPolicy": "Never",
"imagePullSecrets": [
{
"name": "docker-registry-secret"
}
]
}
}
}
}
在某些情况下,例如ip/端口配置错误,“可靠地运行一个Pod直到完成”是不可能的,重新创建Pod是浪费时间和资源的。
那么有可能吗?如果总是失败,如何限制kubernetes作业来创建最大数量(比如3个)的pod?您可能没有在pod规范中设置重启策略:从不,添加它,我希望它更符合您的预期行为。取决于您的kubernetes版本,您可以使用以下方法解决此问题:
restartPolicy:OnFailure
,那么失败的容器将在同一个Pod中重新启动,因此您不会得到很多失败的Pod,而是会得到一个有很多重新启动的PodbackoffLimit
,用于控制失败作业的重新启动策略。此参数定义在将作业视为失败之前作业的重试次数,默认为6次。要使此参数起作用,必须设置参数restartPolicy:Never
谢谢你的回答,但我的清单确实是这样的。我已经在问题中附加了json。