k8s应用内部日志收集
日志收集架构图
问题描述:将pod的日志文件通过emptydir方式挂载出来,但是kubelet挂载出来的日志文件目录默认只有podID名,很难辨别日志文件是那个pod,那个containers的。
解决方案:在pod创建的时候通过软链接将podname,namespace,containersname,containerid等信息对应到pod的日志目录,从而解决上述问题。
源码改动:
1.k8s/pkg/kubelet/dockertools/docker_manager.go
func
(dm
*
DockerManager)
runContainerInPod() 方法添加
//软链接/var/lib/kubelet/pods
获取容器的pod名,用于Elasticsearch日志搜集服务
//
/var/lib/kubelet/pods/+podUID+/volumes/kubernetes.io~empty-dir/data/*-
>/var/log/containers/applog.podName.containerName.id.log