我们使用kubernetes工作来创建性能测试pod。根据文档,工作的一个优点是
创建一个Job对象,以便可靠地运行一个Pod完成
但是在我们的测试中,如果之前的功能失败,这个功能将创建无限的pod,这将占用我们团队的共享群集的资源,并且删除这些pod将花费大量时间。
目前工作清单是这样的:
{
"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 / ports,“可靠地运行一个Pod完成”是不可能的,重新创建pod会浪费时间和资源。那么它是否可能,如果总是失败,如何限制kubernetes工作来创建一个最大数量(比如3)的pod?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您的kubernetes版本,您可以使用以下方法解决此问题:
设置选项:restartPolicy: OnFailure,然后失败的容器将在同一个Pod中重新启动,因此你不会得到很多失败的Pod,而是你会得到一个有很多重启的Pod。
从Kubernetes 1.8开始,有一个参数backoffLimit来控制失败作业的重启策略。此参数定义在将作业处理为失败之前作业的重试次数,默认为6次。要使此参数起作用,必须设置参数restartPolicy: Never。