如何知道Kubernetes的工作是否完成?

如何知道Kubernetes的工作是否完成?,kubernetes,Kubernetes,我使用Python kubernetes客户端,并希望等待作业是否完成: api\u实例。创建\u命名空间的\u作业(“默认”,主体,pretty=True) 此调用仅生成提交作业,即使作业仍在运行,它也将返回响应。我如何才能等待作业完成?我唯一能做到这一点的方法是调用循环: api\u实例。读取\u名称空间\u作业\u状态() …并检查结果状态 您可以通过调用kubectl wait达到同样的效果,但它不是python。你可以克隆kubectl源代码(在Go中)并找到它们是如何在那里实现的

我使用Python kubernetes客户端,并希望等待作业是否完成:

api\u实例。创建\u命名空间的\u作业(“默认”,主体,pretty=True)

此调用仅生成提交作业,即使作业仍在运行,它也将返回响应。我如何才能等待作业完成?

我唯一能做到这一点的方法是调用循环:

api\u实例。读取\u名称空间\u作业\u状态()
…并检查结果状态


您可以通过调用
kubectl wait
达到同样的效果,但它不是python。你可以克隆kubectl源代码(在Go中)并找到它们是如何在那里实现的

我找到了解决办法。通过观察作业并观察事件,可以识别作业已完成:

从kubernetes导入客户端,配置,监视
config.load_kube_config()
api_client=client.BatchV1Api()
打印(“信息:等待事件发生…”)
w=手表。手表()
对于w.stream中的事件(api\u客户端。列出所有\u名称空间的\u作业):
o=事件['object']
打印(o)
如果(o.status…=“Complete”):。。。。

您不必为解决方案提供两个单独的答案。把它们放在一篇文章中。嗨@smrt28,我认为你的解决方案是对的,但是当我运行job_status=api_实例时。读了_namespaced_job_status(name=name,namespace=“default”),然后我得到了一个错误:无法获取作业。名称空间中的batch/status \“default\,“reason”:“禁止”,“详细信息”:{“name”:“数据分析测试”,“组”:“batch”,“kind”:“jobs”},代码":403}. 我想这是与kubernetes相关的问题,而不是python代码。这是一个身份验证问题。您是否使用正确的凭据初始化了kubernetes客户机类?是的,我可以调用其他命令,如列出所有POD,但此命令只是fail@cookiedough对于不同的解决方案,可以使用不同的帖子。通过这种方式,人们可以独立投票选择解决方案。如果o.status.successed,则应为
;如果o.status.failed,则应为
;如果o.status.active,则应为