Kubernetesジョブが持つ可能性のあるすべてのステータス状態の概要を提供するリソースはありますか?
ジョブを実行するときに、ジョブが既に実行されているかどうかを確認し、実行されている場合は、新しいジョブを終了したいと思います。
until kubectl get jobs myjob -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep True ; do sleep 1 ; done
に何度も遭遇しましたが、すでに完了しているかどうかではなく、実行中かどうかを知りたいです。 kubectl 1.11の待機機能を待たない(ha)
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#jobcondition-v1-batch は、type
の値が「完全」および「失敗」し、”True”
または”False”
status
。
ジョブステータス条件配列に加えて、ジョブステータスactive
カウント、および単に興味がある場合はstartTime
とcompletionTime
を確認することも役立ちます。それが終わったかどうかで。
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の別の例を見つけました:
コマンドラインを使用して、失敗/成功のいずれかでkubernetesジョブが完了するのを待ちます
@ 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