当前,我有一个运行cron作业的Kubernetes容器。 cron作业将写入/var/log/cronlog
处的日志文件。但是,当我键入kubectl log my-pod-name
时,/var/log/cronlog
的内容不包括在内。
如何使/var/log/cronlog
的内容包含在kubectl log my-pod-name
的输出中?
答案 0 :(得分:1)
我认为您不应该向stdout和stderr写入文件,以便能够使用kubectl log
答案 1 :(得分:1)
您可以附加容器启动脚本以包括日志
类似run.sh && tail -f / var / log / cronlog
答案 2 :(得分:1)
为什么不使用https://codepen.io/mikeyhaklander/pen/OeONOz创建Jobs?
我认为,如果应该运行Kubernetes而不是普通的cronjob,则应该利用它们来利用Jobs。这样会减少资源消耗,您将快速检查cronjob是否失败。
正如先前答案中已经提到的那样,您需要将消息/日志发送到stdout
以下是一个CronJob的示例,它确实发送了date
并向标准输出打印了Hello from the Kubernetes cluster
,并且kubectl logs job/<JOB_NAME>
可以访问日志
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
namespace: default
spec:
schedule: "* * * * *" # run every minute
startingDeadlineSeconds: 10 # if a job hasn't starting in this many seconds, skip
concurrencyPolicy: Forbid # either allow|forbid|replace
successfulJobsHistoryLimit: 3 # how many completed jobs should be
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
我希望这会为您提供一些概述。