K8S 生产实践-15-1-常见日志采集问题和解决方案分析
一、k8s中的日志处理
传统服务 VS k8s 中的服务
传统 | k8s |
---|---|
固定机器、固定目录 | 节点不固定 |
不受重启影响 | 重启服务会漂移 |
不用关注 stdout、stderr | 需关注 stdout、stderr |
k8s 的日志
stdout、stderr
/var/lib/docker/containers/<cname>/<cname>-json.log
日志文件
应用的日志文件,docker重启后就会丢失。
常见方案-远程日志
常见方案-sidecar
在每个 Pod 中跑一个sidecar,sidecar 会和主容器共享 Volume,可以访问所有日志文件,这种做法很简单,对服务没有侵入,但是对Pod有一定的侵入,毕竟每个Pod都多了个容器,同时与主容器共享 Volume,内存和CPU这种消耗是不可避免的,社区并不推荐这种方案。
常见方案-LogAgent
我们的实践方案
LogPilot
- 智能的容器日志采集工具
- 自动发现机制
-
2017年初在GitHub开源
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)