观看Kubernetes作业输出直到完成

时间:2019-06-24 19:57:35

标签: kubernetes kubectl

是否可以使用kubectl监视作业的输出(STDOUT和STDERR)?我们需要等待作业完成以观察其输出,如果作业以错误完成,则应中断整个过程。

我想将作业输出(STDOUT和STDERR)重定向到我当前的进程STDOUT。我要等待工作完成。如果错误完成,当前进程(通过kubectl触发了作业)也应该错误完成。我知道kubectl wait,但据我所知,它不支持监听作业输出。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下几种选择:

  1. 实时查看作业日志:
    • kubectl logs --follow $POD

如果您在定位合适的吊舱时遇到麻烦,请先kubectl describe job $JOB 窗格名称将在“事件”下

  1. 这里还有更多有用的kubectl命令:
    • kubectl logs -f my-pod-流pod日志(stdout)
    • kubectl logs -f my-pod -c my-container-流容器容器日志(stdout,多容器情况)
    • kubectl logs -f -l name=myLabel --all-containers-流式传输所有标签名称为myLabel(stdout)的Pod日志

有关更多信息,请参见here

  1. 使用kubectl wait再试一次,但要使用--for=condition=xxxxx之类的适当标志 成功消息将被打印到标准输出,指示何时满足指定条件。

答案 1 :(得分:0)

我们最终使用了三个命令来完成任务。首先,我们删除旧作业(它可能之前已经运行过),创建新作业,等待完成(带有超时),完成后,我们打印日志:

kubectl delete job my-job || true
kubectl apply -f ./jobs/my-job.yaml
kubectl wait --for=condition=complete job/my-job --timeout=60s
echo "Job output:"
kubectl logs job/my-job