0

目前我有一个运行 cron 作业的 Kubernetes pod。cron 作业写入位于/var/log/cronlog. 但是,当我键入 时,不包括kubectl log my-pod-name的内容。/var/log/cronlog

如何使 的内容/var/log/cronlog包含在 的输出中kubectl log my-pod-name

4

3 回答 3

1

我认为您应该写入 stdout 和 stderr 而不是写入能够使用的文件kubectl log

于 2019-06-27T01:28:52.307 回答
1

您可以附加容器启动脚本以包含日志

类似 run.sh && tail -f /var/log/cronlog

于 2019-06-27T06:12:56.790 回答
1

首先,为什么不使用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

我希望这可以为您提供一些概述。

于 2019-06-27T09:56:40.743 回答