我们有一个运行在Centos 7上的kubernetes集群。然而,所有日志记录都将转到/var/log/messages,这使得centos系统日志难以读取。我是否可以告诉kubeadm/kubernetes登录到/var/ log /kubernetes呢?
我们已经将我们的应用程序(pod)日志发送到一个挂载点。我们需要移动库伯奈特的史泰尔原木。
发布于 2018-08-08 21:03:14
然而,所有日志记录都将转到/var/log/messages,这使得centos系统日志难以读取。我是否可以告诉kubeadm/kubernetes登录到/var/ log /kubernetes呢?
不,不完全是,但您可以重新配置Docker以另一种方式登录。
这可能取决于您正在运行的Docker版本,但在我的CentOS 7 VM (几周前)中,我运行的是通过yum安装的Docker版本1.13.1。
当浏览文档的1.13版本和最新的稳定版本的Docker时,他们说的差不多是一样的:
如果不指定日志驱动程序,则默认为json-file。
我通过yum安装的Docker版本在启动Docker时加载的环境文件(/etc/sysconfig/docker)中有以下一行:
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'正如您可以看到的那样,日志驱动程序被配置为journald,这应该是您在/var/log/messages中从容器中看到日志的原因。您可以检查配置了哪个日志记录驱动器:
docker info | grep 'Logging Driver'日志驱动程序决定在何处发送所有日志,即从容器发送的stderr和stdout。Docker支持两个不同的测井驱动程序,如果您选择配置例如json-file,如果您想从OS的角度重新定位日志记录(“更改”日志路径),这可能是最好的选择。每个Docker容器都有自己的日志写入/var/log/pods/<ID>/<NAME>/<LOGFILE>,实际上日志文件是返回到/var/lib/docker/containers/<ID>/<ID>-json.log的符号链接。
如果要配置json-file,则删除--log-driver=journald标志,然后在文档中提到的/etc/docker/daemon.json文件中配置该标志。使用json-file,您可以配置日志旋转和日志文件大小等内容,请参阅文档获得更多选项。
当通过daemon.json文件进行配置时--这将成为一个全局设置--您可以始终使用docker run ... --log-driver覆盖用于特定容器的日志记录驱动程序。
这些日志记录更改适用于在Docker中运行的所有内容,要移动kubelet (它与主机上的Docker一起运行),您可以查看可配置的选项。默认情况下,kubelet stderr日志是通过journald记录的,并在/var/log/messages中结束,要更改此行为,可以添加--log-dir选项并指向另一个位置。
最后,我认为如果日志传送适合您的环境,那么考虑并研究其他日志驱动程序是很好的。
https://stackoverflow.com/questions/51747434
复制相似问题