I am trying to create an automated pipeline that would run multiple pods one after another on a namespace. The current issue is, between runs I want to wait for a pod to be fully deleted before running the next. Are there any ways to check if a given pod is fully deleted?
Current script:
kubectl delete -f pod.yaml
sleep 10
kubectl create -f pod.yaml
error when creating "pod.yaml": object is being deleted: pods "test-pod" already exists
kubectl 1.11+ waits for the deletion to be completed before delete returns.
You can do something like this:
kubectl delete -f pod.yaml
until kubectl get pod <pod-name> 2>&1 >/dev/null; do sleep 10; done
kubectl create -f pod.yaml
Basically, wait until kubectl get pod <pod-name>
returns an error because it doesn't exist.
In case you want to delete the pod immediately, use this.
kubectl delete pod NAME --grace-period=0 --force
Use --wait
option, i.e.:
kubectl delete -f your.yaml --wait=true