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

问题描述 投票:7回答:3

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

docker kubernetes syslog
3个回答
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
投票

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

/etc/systemd/system/docker.service

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

更进一步,如果你没有设置这个--log-driver,默认情况下会创建json文件,它会收集kubernetes pods中容器的所有日志,你可以找到这些文件

your_docker_runtime_root/docker/containers/container_id/container_id-json.json

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社区添加日志驱动程序opts或使用上述方法之一。

© www.soinside.com 2019 - 2024. All rights reserved.