如何模仿Kubernetes中的“--log-driver = syslog”

时间:2015-11-18 03:11:32

标签: docker kubernetes syslog

使用docker,我可以通过log-driver = syslog命令行选项将容器日志转发到syslog。如何通过Kubernetes yaml / json描述符传递这些docker参数?

4 个答案:

答案 0 :(得分:4)

从可用文档开始:在loggingvolumes的情况下。将这两个来源放在一起,我们得出如下内容:

...
containers:
  - name: syslogtest
    image: ubuntu:14.04
    volumeMounts:
      - name: logvol
        mountPath: /dev/log
        readOnly: false
volumes:
  - name: logvol
    source:
      hostDir:
        path: /dev/log
...

答案 1 :(得分:1)

我不认为kubernetes需要在pod json文件中执行--log-driver选项。根据我的经验,您可以在泊坞窗服务中设置此类设置。即检查

/etc/systemd/system/docker.service

并设置ExecStart = / usr / bin / docker守护进程--log-driver = json-file blablabla。更多信息可以到达:https://docs.docker.com/engine/admin/logging/overview/#configure-logging-drivers

此外,如果你没有设置这个--log-driver,默认情况下会创建json文件,它会在kubernetes pod中收集你容器的所有日志,你可以在

上找到这些文件。
your_docker_runtime_root/docker/containers/container_id/container_id-json.json

答案 2 :(得分:0)

已经在此线程中讨论了很长时间:https://github.com/kubernetes/kubernetes/issues/15478,但是k8s社区确实建议您拥有自己的专用日志代理。您可以选择在每台主机上运行它,也可以将其用作sidecar,或者更推荐将其用作DaemonSet。

在此处查看详细信息:https://kubernetes.io/docs/concepts/cluster-administration/logging/#cluster-level-logging-architectures

由于k8s离开dockerd并移至containerd,您甚至没有选择配置dockerd日志记录驱动程序和日志选择的选项。因此,您可以等待k8s社区添加日志记录驱动程序选项,也可以使用上述方法之一。

答案 3 :(得分:0)

您可以在 /etc/docker/daemon.json

中设置容器运行时属性
sudo sh -c 'echo "{\"log-driver\":\"syslog\"}"  > /etc/docker/daemon.json'

kubernetes.io\Container runtimes