监控kubernetes作业

tri*_*999 3 kubernetes kubernetes-health-check

我有kubernetes作业,需要花费大量时间才能完成。在4至8分钟之间。我有什么办法可以知道什么时候完成工作,而不是假设最坏的情况下要等8分钟。我有一个执行以下操作的测试用例:

1) Submits the kubernetes job.
2) Waits for its completion.
3) Checks whether the job has had the expected affect.
Run Code Online (Sandbox Code Playgroud)

问题是,在我的Java测试中,它在kubernetes中提交了部署作业,即使该作业花费的时间少于完成该作业的时间,我仍要等待8分钟,因为我没有办法从Java监视作业的状态测试。

Voj*_*tek 10

$ kubectl wait --for=condition=complete --timeout=600s job/myjob
Run Code Online (Sandbox Code Playgroud)

  • 作业可能会失败并且永远不会完成...在这种情况下,您的命令将卡住几分钟(超时 = 600 秒)而不是返回。 (3认同)

tri*_*999 5

<kube master>/apis/batch/v1/namespaces/default/jobs 
Run Code Online (Sandbox Code Playgroud)

端点列出了作业的状态。我已经解析了这个json并检索了以“ deploy ...”开头的最新运行作业的名称。

然后我们可以打

<kube master>/apis/batch/v1/namespaces/default/jobs/<job name retrieved above>
Run Code Online (Sandbox Code Playgroud)

并在作业成功时监视以下状态字段值

"status": {
    "conditions": [
      {
        "type": "Complete",
        "status": "True",
        "lastProbeTime": "2016-09-22T13:59:03Z",
        "lastTransitionTime": "2016-09-22T13:59:03Z"
      }
    ],
    "startTime": "2016-09-22T13:56:42Z",
    "completionTime": "2016-09-22T13:59:03Z",
    "succeeded": 1
  }
Run Code Online (Sandbox Code Playgroud)

因此,我们一直在轮询该端点,直到完成为止。希望这对某人有帮助。