Возможно ли это, и как ограничить работу kubernetes, чтобы создать максимальное количество стручков, если всегда не удается?
Как QA в нашей компании я ежедневно пользуюсь kubernetes, и мы используем работу kubernetes для создания модулей тестирования производительности. Согласно документам, одним из преимуществ работы является
создать один объект Job для надежного запуска одного 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 / портов, "надежный запуск одного модуля до завершения" невозможен, а воссоздание модулей - это пустая трата времени и ресурсов. Так возможно ли, и как ограничить работу kubernetes, чтобы создать максимальное количество (скажем, 3) стручков, если всегда терпит неудачу?
2 ответа
В зависимости от версии kubernetes, вы можете решить эту проблему следующими способами:
установить опцию:
restartPolicy: OnFailure
затем сбойный контейнер будет перезапущен в том же модуле, поэтому вы не получите много отказавших модулей, вместо этого вы получите модуль с большим количеством перезапусков.От Kubernetes 1.8, есть параметр
backoffLimit
контролировать политику перезапуска неудачной работы. Этот параметр определяет время повторения задания перед обработкой задания, которое не удалось, по умолчанию 6 раз. Чтобы этот параметр работал, вы должны установить параметрrestartPolicy: Never
,
Вы, вероятно, не установили restartPolicy: Never
добавьте это в спецификации вашего стручка, и я ожидаю, что он лучше соответствует ожидаемому поведению.