是否有资源概述kubernetes作业可能具有的所有可能的状态条件?
我想知道是因为我想检查一下,当我运行一个作业时是否已经在运行,如果已经运行,则退出新作业。
我遇到过until kubectl get jobs myjob -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep True ; do sleep 1 ; done
多次,但我想知道它是否正在运行,而不是它是否已经完成。不想等待(ha)for kubectl 1.11等待功能
答案 0 :(得分:5)
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#jobcondition-v1-batch意味着仅有的type
值是“ Complete”和“ Failed”,并且它们可能具有”True”
或”False”
status
。 / p>
除了工作状态条件数组之外,如果您只是感兴趣,还可以查看工作状态active
计数以及startTime
和completionTime
是否完成。
答案 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