How to wait until Kubernetes list of pods are successful using shell script

10/17/2018

I am trying to find a command or a sample shell snippet where I can wait until the list of Kubernetes pods is successful. I have checked the answer but it was not giving any output. Can someone guide me or suggest an approach, I am completely new to kubernetes.

kubectl -n test-ns get jobs -w

NAME     DESIRED   SUCCESSFUL   AGE
test-1    1         1            2d
test-2    1         1            2d
test-3    1         1            2d
test-4    1         1            2d


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

This is not giving any output

-- Auto-learner
kubectl
kubernetes
shell

3 Answers

3/23/2020

To wait until your pods are running, check for "condition=ready" and filter by app label, for example:

$ kubectl wait --for=condition=ready pod -l app=netshoot 
pod/netshoot-58785d5fc7-xt6fg condition met
-- Noam Manos
Source: StackOverflow

10/17/2018

If you want to use kubectl as described here where it gets all the jobs, you need to use .items[*]... in your JSONpath (That answer is for just one specific job). For example:

kubectl -n test-ns get jobs \
  -o jsonpath='{.items[*].status.conditions[?(@.type=="Complete")].status}' \
  | grep True
-- Rico
Source: StackOverflow

10/17/2018

you need to use this command

kubectl rollout status 
-- Scott Stensland
Source: StackOverflow