Tell when Job is Complete Tell when Job is Complete kubernetes kubernetes

Tell when Job is Complete


Since version 1.11, you can do:

kubectl wait --for=condition=complete job/myjob

and you can also set a timeout:

kubectl wait --for=condition=complete --timeout=30s job/myjob


You can visually watch a job's status with this command:

kubectl get jobs myjob -w

The -w option watches for changes. You are looking for the SUCCESSFUL column to show 1.

For waiting in a shell script, I'd use this command:

until kubectl get jobs myjob -o jsonpath='{.status.conditions[?     (@.type=="Complete")].status}' | grep True ; do sleep 1 ; done


You can use official Python kubernetes-client.

https://github.com/kubernetes-client/python

Create new Python virtualenv:

virtualenv -p python3 kubernetes_venvactivate it with

source kubernetes_venv/bin/activate

and install kubernetes client with:

pip install kubernetes

Create new Python script and run:

from kubernetes import client, configconfig.load_kube_config()v1 = client.BatchV1Api()ret = v1.list_namespaced_job(namespace='<YOUR-JOB-NAMESPACE>', watch=False)for i in ret.items:    print(i.status.succeeded)

Remember to set up your specific kubeconfig in ~/.kube/config and valid value for your job namespace -> '<YOUR-JOB-NAMESPACE>'