使用docker,我可以通过log-driver = syslog命令行选项将容器日志转发到syslog。如何通过Kubernetes yaml / json描述符传递这些docker参数?
答案 0 :(得分:4)
从可用文档开始:在logging和volumes的情况下。将这两个来源放在一起,我们得出如下内容:
...
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。
由于k8s离开dockerd
并移至containerd
,您甚至没有选择配置dockerd日志记录驱动程序和日志选择的选项。因此,您可以等待k8s社区添加日志记录驱动程序选项,也可以使用上述方法之一。
答案 3 :(得分:0)
您可以在 /etc/docker/daemon.json
中设置容器运行时属性sudo sh -c 'echo "{\"log-driver\":\"syslog\"}" > /etc/docker/daemon.json'