Kubernetes - 告诉工作完成时

时间:2017-06-21 21:28:43

标签: kubernetes kubectl kubernetes-jobs

我正在寻找一种方法来告诉(从脚本中)Kubernetes Job完成的时间。我想从容器中取出日志并执行清理。

这样做的好方法是什么?最好的方法是运行kubectl describe job <job_name>和grep for 1 Succeeded或类似的东西吗?

5 个答案:

答案 0 :(得分:50)

从1.11版开始,您可以执行以下操作:

kubectl wait --for=condition=complete job/myjob

,您还可以设置超时时间:

kubectl wait --for=condition=complete --timeout=30s job/myjob

答案 1 :(得分:21)

您可以使用此命令直观地查看作业的状态:

kubectl get jobs myjob -w

-w选项会监视更改。您正在寻找显示SUCCESSFUL的{​​{1}}列。

要在shell脚本中等待,我将使用此命令:

1

答案 2 :(得分:2)

您可以使用官方Python kubernetes-client

https://github.com/kubernetes-client/python

创建新的Python virtualenv:

virtualenv -p python3 kubernetes_venv

激活它

source kubernetes_venv/bin/activate

并使用以下命令安装kubernetes客户端:

pip install kubernetes

创建新的Python脚本并运行:

from kubernetes import client, config

config.load_kube_config()

v1 = client.BatchV1Api()
ret = v1.list_namespaced_job(namespace='<YOUR-JOB-NAMESPACE>', watch=False)
for i in ret.items:
    print(i.status.succeeded)

请记住要在kubeconfig中设置特定的~/.kube/config和作业名称空间的有效值-> '<YOUR-JOB-NAMESPACE>'

答案 3 :(得分:0)

我会使用-w--watch

$ kubectl get jobs.batch --watch
NAME     COMPLETIONS   DURATION   AGE
python   0/1           3m4s       3m4s

答案 4 :(得分:0)

使用 kubectl

kubectl get job test-job -o jsonpath='{.status.succeeded}'

kubectl get job test-job -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}'