作业的 Kubernetes 状态条件列表?

List of Kubernetes status conditions for jobs?

是否有任何资源可以概述 kubernetes 作业可能具有的所有可能状态条件?

我想知道,因为我想检查,当我 运行 一份工作时,它是否已经 运行ning,如果是,退出新工作。

我遇到了 until kubectl get jobs myjob -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep True ; do sleep 1 ; done 很多次,但我想知道它是否 运行ning,而不是它是否已经完成。不想等待 (ha) kubectl 1.11 等待功能

kubernetes API docs for JobCondition 意味着只有 type 值是“完成”和“失败”,并且它们可能有 ”True””False” status.

除了工作状态条件数组之外,您可能还会发现查看工作状态 active 计数以及 startTimecompletionTime(如果您只关心它是否完成了。

kubectl get jobs <myjob> --namespace <mynamespae> -o jsonpath='{.status.conditions[?(@.type=="Succeeded")].status}'

我相信这有助于获取给定选择器的所有作业状态,并且可以在 bash 或 CI 中解析结果以等待某些特定状态:

kubectl get job -n myspace --selector=appName=myapplication -o json | jq -r '.items[] | .metadata.name + ":" + (.status.conditions[] | select(.status == "True") .type + ":" + .status)'
myapplication-job-1558097758:Complete:True
myapplication-job-1558101228:Failed:True

我还在这里找到了 bash 的另一个例子:

来自@ruazn2:

until [[ $SECONDS -gt $end ]] || [[ $(kubectl get jobs $job_name -o jsonpath='{.status.conditions[?(@.type=="Failed")].status}') == "True" ]] || [[ $(kubectl get jobs $job_name -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}') == "True" ]]; do

这个已经成功测试并且returns“真”或“假”:

kubectl get jobs <myjob> --namespace <mynamespace> -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}'