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)
# Wait for pod to be available; logs will fail if the pod is "Pending"
while [[ "$(kubectl get pod -l job-name=myjob -o json | jq -rc '.items | .[].status.phase')" == 'Pending' ]]; do
# Avoid flooding k8s with polls (seconds)
sleep 0.25
done
# Tail logs
kubectl logs -l job-name=myjob --tail=400 -f
7条答案
按热度按时间egdjgwm81#
从版本1.11开始,您可以执行以下操作:
您还可以设置超时:
mutmk8jj2#
您可以使用以下命令直观地查看作业的状态:
-w
选项监视更改。您正在查找SUCCESSFUL
列以显示1
。对于在shell脚本中等待,我使用以下命令:
xzabzqsa3#
您可以使用官方的
Python kubernetes-client
。https://github.com/kubernetes-client/python
创建新的Python虚拟环境:
virtualenv -p python3 kubernetes_venv
使用以下命令激活它source kubernetes_venv/bin/activate
并安装带有以下内容的kubernetes客户端:
pip install kubernetes
创建新Python脚本并运行:
请记住在
~/.kube/config
中设置特定的kubeconfig
,并为作业命名空间设置有效值-〉'<YOUR-JOB-NAMESPACE>'
w1jd8yoj4#
我会使用
-w
或--watch
:vngu2lb85#
从@Coo的评论中添加最佳答案,如果您在获取日志时添加
-f
或--follow
选项,它将继续跟踪日志,并在作业完成或失败时终止。当作业失败时,$#
状态代码甚至为非零。据我所知,这种方法的一个缺点是没有超时选项。
另一个缺点是当pod在
Pending
中时(当container正在启动时),logs调用可能会失败。zsbz8rwp6#
使用
kubectl
执行以下任一查询或
sz81bmfz7#
虽然
kubectl wait --for=condition=complete job/myjob
和kubectl wait --for=condition=complete job/myjob
允许我们检查作业是否完成,但是无法检查作业是否刚刚执行完(无论成功还是失败)。如果这就是您正在寻找的,那么使用kubectl status check
简单地bashwhile loop
就可以达到目的。