有可能吗?如果总是失败,如何限制kubernetes作业以创建最大数量的Pod?

时间:2019-01-02 03:00:25

标签: kubernetes kubernetes-pod kubernetes-jobs

作为我们公司的质量检查人员,我每天都是kubernetes的用户,我们使用kubernetes来创建性能测试模块。根据{{​​3}},工作的一项优势是

  

创建一个Job对象,以便可靠地运行一个Pod来完成

但是在我们的测试中,如果先前的Pod失败,此功能将创建无限的Pod,这将占用我们团队的共享集群的资源,并且删除此类Pod将花费大量时间。看到这张图片: docs

当前工作清单是这样的:

   {
  "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?

2 个答案:

答案 0 :(得分:2)

根据您的kubernetes版本,可以使用以下方法解决此问题:

  1. 设置选项:restartPolicy: OnFailure,然后将失败的容器在同一Pod中重新启动,因此不会出现很多失败的Pod,而是会看到重新启动很多的Pod。 / p>

  2. 从Kubernetes 1.8开始,有一个参数backoffLimit用于控制失败作业的重新启动策略。此参数定义将作业视为失败之前的作业重试时间,默认为6次。为了使此参数起作用,必须设置参数restartPolicy: Never

答案 1 :(得分:1)

您可能没有在广告连播规范中设置restartPolicy: Never,请添加它,我希望它可以更好地匹配您的预期行为。