

How do you wait for something to happen with kubectl
? I used to use a while true
loop in a shell script and check with a complicated kubectl get
command until Iโd see a certain condition, such as condition=Ready
would be met. No more!ย :)
Meet the kubectl wait command and see it in action here.
First, letโs create a job called worker
that does something utterly useless in itself (print the word blah
to stdout
and pause for 3 seconds ten times):
$ kubectl version --short
Client Version: v1.12.0
Server Version: v1.11.0
$ kubectl create ns waitplayground
$ kubectl -n waitplayground \
create job worker \
--image centos:7 -- \
sh -c \
'for i in {1..10} ; do echo blah ; sleep 3; done'
You could keep an eye on the resources with:
$ kubectl -n waitplayground get job,po
But what if youโd like to kick off another job after worker
has completed? Here you go:
$ kubectl -n waitplayground \
wait --for=condition=complete --timeout=32s \
job/worker
job.batch/worker condition met
Note that above Iโve set the timeout (32 sec) slightly higher than what Iโd expect the worker
job to take (ca. 10 * 3 sec). Once the kubectl wait
command returns, you just need to inspect its output and you can then make a decision based on this to, for example, launch a dependent job or retry the original one.
That was it, happy weekend and keep kubecuddlingย ;)
Create your free account to unlock your custom reading experience.