如何使Kubernetes管理我的Pod日志文件?

时间:2019-06-26 22:46:38

标签: docker kubernetes

当前,我有一个运行cron作业的Kubernetes容器。 cron作业将写入/var/log/cronlog处的日志文件。但是,当我键入kubectl log my-pod-name时,/var/log/cronlog的内容不包括在内。

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

3 个答案:

答案 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

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