似乎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
答案 0 :(得分:4)
Cron作业会按时间安排创建作业
...
一项作业会创建一个或多个吊舱,并确保指定数量的吊舱成功终止。
您所需要做的只是查看为该作业创建的pod的日志。
通过kubectl get jobs
查找工作。这将返回带有时间戳的CronJob名称
查找已执行作业kubectl get pods -l job-name=your-job-@timestamp
使用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