Kubernetes职位状态条件列表?

时间:2018-07-09 15:19:31

标签: kubernetes kubectl

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

我想知道是因为我想检查一下,当我运行一个作业时是否已经在运行,如果已经运行,则退出新作业。

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

3 个答案:

答案 0 :(得分:5)

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#jobcondition-v1-batch意味着仅有的type值是“ Complete”和“ Failed”,并且它们可能具有”True””False” status。 / p>

除了工作状态条件数组之外,如果您只是感兴趣,还可以查看工作状态active计数以及startTimecompletionTime是否完成。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我相信这可以帮助获取给定选择器的所有作业状态,并且可以将结果解析为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的另一个示例:

Wait for kubernetes job to complete on either failure/success using command line

通过@ 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