问题
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
回答1:
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{}
回答2:
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.
来源:https://stackoverflow.com/questions/53536907/kubectl-wait-for-condition-complete-timeout-30s