kubectl wait --for=condition=complete --timeout=30s

11/29/2018

I am trying to check the status of a pod using kubectl wait command through this documentation. Following is the command that i am trying

kubectl wait --for=condition=complete --timeout=30s -n d1 job/test-job1-oo-9j9kj

Following is the error that i am getting

Kubectl error: status.conditions accessor error: Failure is of the type string, expected map[string]interface{}

and my kubectl -o json output can be accessed via this github link.

Can someone help me to fix the issue

-- Auto-learner
kubectl
kubernetes

2 Answers

11/30/2018

This totally looks like you are running kubectl wait --for=condition=complete on a Pod as described in your output rather than a Job.

A pod doesn't have the --for=condition=complete option. Exactly, what I get when I run it on a pod:

$ kubectl wait --for=condition=complete pod/mypod-xxxxxxxxxx-xxxxx
error: .status.conditions accessor error: Failure is of the type string, expected map[string]interface{}
-- Rico
Source: StackOverflow

3/23/2020

To wait until your pod is running, check for "condition=ready". In addition, prefer to filter by label, rather than specifying pod id. For example:

$ kubectl wait --for=condition=ready pod -l app=netshoot 
pod/netshoot-58785d5fc7-xt6fg condition met

Another option, is to wait until the deployment has finished successfully:

$ kubectl rollout status deployment netshoot
deployment "netshoot" successfully rolled out

Both options works great in automation scripts, when it is required to wait for an app to be running.

-- Noam Manos
Source: StackOverflow