似乎kubectl logs
不支持cronjob。它说
错误:无法从 *v1beta1.CronJob 获取日志:未实现 *v1beta1.CronJob 的选择器
目前我一一查看所有相关作业的日志。
有没有简单的命令或工具来获取这些日志?
我对 bash 脚本进行了一些研究,并修改了edbighead 的答案以更好地满足我的需求。
# 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
Run Code Online (Sandbox Code Playgroud)
# 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
Run Code Online (Sandbox Code Playgroud)
edb*_*ead 14
Cron 作业按基于时间的计划创建作业
...
一项作业创建一个或多个 Pod,并确保指定数量的 Pod 成功终止。
您只需要查看为作业创建的 pod 的日志。
找到你的工作kubectl get jobs
。这将返回带有时间戳的 CronJob 名称
查找已执行作业的 pod 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
Run Code Online (Sandbox Code Playgroud)