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

时间:2019-04-16 11:48:18

标签: kubernetes

我使用Python kubernetes-client,并且想等待作业完成:

api_instance.create_namespaced_job("default", body, pretty=True)

此调用仅执行提交作业,即使该作业仍在运行,它也会返回响应。我要如何等待工作完成?

2 个答案:

答案 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中),然后在那里找到它们的工作方式。