kubectl等待--for =条件=完成-超时= 30s

时间:2018-11-29 10:30:05

标签: kubernetes kubectl

我正在尝试通过此documentation使用kubectl wait命令检查pod的状态。 以下是我正在尝试的命令

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

以下是我得到的错误

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

和我的kubectl -o json output can be accessed via this github link

有人可以帮助我解决此问题

3 个答案:

答案 0 :(得分:6)

要等到pod运行时,检查“ condition = ready”。此外,更喜欢按标签过滤,而不是指定窗格ID。例如:

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

另一个选项是rollout status-等待部署完成:

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

当需要等待安装应用程序时,这两个选项在自动化脚本中都很好用。但是,正如@CallMeLaNN在第二个选项中指出的那样,“推出”部署不一定没有错误。

答案 1 :(得分:2)

这完全看起来像您在输出中描述的Pod而非Job上运行kubectl wait --for=condition=complete

广告连播没有--for=condition=complete选项。确实,我在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 :(得分:0)

如 Rico 所述,您不能等待 Pod 上的完整状态,假设您想等待作业完成,请使用以下内容

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