Возможно ли и как ограничить задание kubernetes для создания максимального количества подов, если оно всегда терпит неудачу?

Как QA в нашей компании я ежедневно пользуюсь кубернетами, и мы используем задание кубернетов для создания модулей тестов производительности. Одно из преимуществ работы согласно документам , является

для создания одного объекта 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",
              "[email protected]: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) модулей, если они всегда терпят неудачу?


person Lei Yang    schedule 02.01.2019    source источник


Ответы (2)


В зависимости от вашей версии Kubernetes вы можете решить эту проблему следующими способами:

  1. установите опцию: restartPolicy: OnFailure, тогда отказавший контейнер будет перезапущен в том же самом Pod, поэтому вы не получите много неудачных Pod'ов, вместо этого вы получите Pod с большим количеством перезапусков.

  2. Начиная с Kubernetes 1.8, существует параметр backoffLimit для управления политикой перезапуска неудачного задания. Этот параметр определяет время повтора задания до того, как задание будет считаться неудачным, по умолчанию 6 раз. Чтобы этот параметр работал, необходимо установить параметр restartPolicy: Never.

person Kun Li    schedule 02.01.2019

Вероятно, вы не указали restartPolicy: Never в своей спецификации модуля, добавьте это, и я ожидаю, что он лучше соответствует вашему ожидаемому поведению.

person coderanger    schedule 02.01.2019
comment
Спасибо за ответ, но мой манифест действительно такой. Я прикрепил json к обновленному вопросу. - person Lei Yang; 02.01.2019