本文简单整理 Kubernetes 里关于容器应用日志的四种收集方式。
文章目录
首先解释下容器日志原则:
- 日志收集方案一般需要想办法把日志数据转发到后端(Loging Backend)里存储然后处理。
- 因为Kubernetes 里面对容器日志的处理过程应该与容器、Pod 以及 Node 的生命周期都是完全无关的。这种设计是为了保证,无论是容器挂了、Pod 被删除,甚至节点宕机的时候,应用的日志依然可以被正常获取到。
下面整理几种日志收集方案:
一、直接指定方案
(app容器 - 后端)
最直接的方式,在编写应用的时候,就直接指定好日志的存储后端,如下所示:
在这种方案下,Kubernetes 就完全不必操心容器日志的收集了。但这仅适用于本身已经有完善的日志处理系统的公司。
二、NodeAgent 方案
(app容器 - [stdout/stderr] - NodeAgent - 后端)
这个方案,在社区里是最常用的一种。
在 Node 上部署 logging agent(一般都会以 DaemonS