我使用Python kubernetes-client,并且想等待作业完成:
api_instance.create_namespaced_job("default", body, pretty=True)
此调用仅执行提交作业,即使该作业仍在运行,它也会返回响应。我要如何等待工作完成?
答案 0 :(得分:1)
我找到了解决方案。您可以通过观看作业并观察事件来识别作业已完成:
from kubernetes import client, config, watch
config.load_kube_config()
api_client = client.BatchV1Api()
print("INFO: Waiting for event to come up...")
w = watch.Watch()
for event in w.stream(api_client.list_job_for_all_namespaces):
o = event['object']
print(o)
if (o.status.... = "Complete"): ....
答案 1 :(得分:0)
我设法做到这一点的唯一方法是在循环中调用:
api_instance.read_namespaced_job_status()
...并检查结果状态。
您可以通过调用kubectl wait
来达到相同的目的,但这不是python。您可以克隆kubectl源代码(在Go中),然后在那里找到它们的工作方式。