【问题标题】:Is it possible, and how to limit kubernetes job to create a maxium number of pods if always fail?是否有可能,如果总是失败,如何限制 kubernetes 作业以创建最大数量的 pod?
【发布时间】:2019-05-28 18:31:09
【问题描述】:

作为我们公司的 QA,我是 Kubernetes 的日常用户,我们使用 Kubernetes 作业来创建性能测试 pod。根据docs,工作的一个优势是

创建一个 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 kubernetes-pod kubernetes-jobs


    【解决方案1】:

    您可能没有在您的 pod 规范中设置 restartPolicy: Never,添加它,我希望它更符合您的预期行为。

    【讨论】:

    • 感谢您的回答,但我的清单确实是这样的。我已在更新的问题中附加了 json。
    【解决方案2】:

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

    1. 设置选项:restartPolicy: OnFailure,那么失败的容器会在同一个 Pod 中重启,所以你不会得到很多失败的 Pod,而是会得到一个有很多重启的 Pod。

    2. 从Kubernetes 1.8开始,有一个参数backoffLimit来控制失败作业的重启策略。该参数定义作业失败前的重试次数,默认为6次。要使此参数起作用,您必须设置参数restartPolicy: Never

    【讨论】:

      猜你喜欢
      • 2019-05-05
      • 1970-01-01
      • 2016-05-10
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多