如何获取cronjob创建的作业日志?

时间:2018-12-06 08:53:16

标签: cron kubernetes

似乎kubectl logs不支持cronjob。它说

  

错误:无法从* v1beta1.CronJob获取日志:* v1beta1.CronJob的选择器未实现

当前,我一一检查所有相关作业的日志。

是否有任何简单的命令或工具来获取这些日志?


我对bash脚本进行了一些研究,并修改了edbighead's answer以更好地满足我的需求。

# cronJobGetAllLogs.sh: Get all logs of a cronjob.
# example:
# ./cronJobGetAllLogs.sh [Insert name of cronJob]

jobs=( $(kubectl get jobs --no-headers -o custom-columns=":metadata.name" | awk "/$1-[0-9]+/{print \$1}" | sort -r ) )
for job in "${jobs[@]}"
do
    echo Logs from job $job
    pod=$(kubectl get pods -l job-name=$job --no-headers -o custom-columns=":metadata.name")
    kubectl logs $pod
done

# cronJobGetLatestLog.sh: Get log of latest job initiated by a cronjob.
# example:
# ./cronJobGetLateestLog.sh [Insert name of cronJob]

job=$(kubectl get jobs --no-headers -o custom-columns=":metadata.name" | awk "/$1-[0-9]+/{print \$1}" | sort -r | head -1)
pod=$(kubectl get pods -l job-name=$job --no-headers -o custom-columns=":metadata.name")
kubectl logs $pod

1 个答案:

答案 0 :(得分:4)

摘自CronJobsJobs的文档

  

Cron作业会按时间安排创建作业

     

...

     

一项作业会创建一个或多个吊舱,并确保指定数量的吊舱成功终止。

您所需要做的只是查看为该作业创建的pod的日志。

  1. 通过kubectl get jobs查找工作。这将返回带有时间戳的CronJob名称

  2. 查找已执行作业kubectl get pods -l job-name=your-job-@timestamp

  3. 的窗格
  4. 使用kubectl logs your-job-@timestamp-id查看日志

下面是bash脚本的示例,该脚本执行了上述所有操作,并输出每个作业的pod的日志。

jobs=( $(kubectl get jobs --no-headers -o custom-columns=":metadata.name") )
for job in "${jobs[@]}"
do
   pod=$(kubectl get pods -l job-name=$job --no-headers -o custom-columns=":metadata.name")
   kubectl logs $pod
done