Kubernetes Pod-应用程序日志

时间:2018-10-24 18:19:25

标签: logging kubernetes

我需要提取我的应用程序日志,该日志可在/ var / etc / logs目录下找到。如何从K8吊舱中提取出来?

尝试了kubectl执行程序,但没有帮助。

3 个答案:

答案 0 :(得分:4)

从pod中获取应用程序日志的最简单的方法是使用kubectl cp

kubectl cp <pod-name>:/var/etc/logs logs

这会将pod日志复制到本地计算机上。

但是..

这可能不是一个好的长期解决方案。我建议:

  • 将日志输出到容器内的stdout,这意味着kubectl logs将对您有用
  • 使用fluentd as a sidecar容器管理日志

可以找到更多信息here

答案 1 :(得分:2)

除了其他答案中所述的Fluentd sidecar选项之外,您还可以添加简单的tail -n+1 -f /var/etc/logs sidecar来将日志输出到stdout:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: container
    image: yourimage
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: logs
    image: busybox
    args: [/bin/sh, -c, 'tail -n+1 -f /var/etc/logs']
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}

答案 2 :(得分:0)

您可能需要像fluentd这样的日志收集器。

k8s本身不会为您保留日志。

如果您使用的是GKE,则可以使用stackdriver(听说过,从未尝试过)。