目前我有一个运行 cron 作业的 Kubernetes pod。cron 作业写入位于/var/log/cronlog. 但是,当我键入 时,不包括kubectl log my-pod-name的内容。/var/log/cronlog
如何使 的内容/var/log/cronlog包含在 的输出中kubectl log my-pod-name?
目前我有一个运行 cron 作业的 Kubernetes pod。cron 作业写入位于/var/log/cronlog. 但是,当我键入 时,不包括kubectl log my-pod-name的内容。/var/log/cronlog
如何使 的内容/var/log/cronlog包含在 的输出中kubectl log my-pod-name?
我认为您应该写入 stdout 和 stderr 而不是写入能够使用的文件kubectl log
您可以附加容器启动脚本以包含日志
类似 run.sh && tail -f /var/log/cronlog
首先,为什么不使用CronJob 控制器创建作业?
我认为你应该利用 Kubernetes 并使用 Jobs,如果它们应该运行而不是普通的 cronjob。这将消耗更少的资源,并且您将快速检查 cronjob 是否失败。
同样正如之前的答案中已经提到的那样,您需要将消息/日志发送到标准输出
这是一个发送date并打印Hello from the Kubernetes cluster到标准输出的 CronJob 示例,可以通过以下方式访问日志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
我希望这可以为您提供一些概述。