日志对于我们管理 Kubernetes 集群及其上的应用具有非常重要的作用,特别是在出现故障或者 Bug 的时候
如果你能回答下面几个问题,那么可以不用再看本文了,如果不能回答,本文可能正好适合你
•Docker 都会产生哪些日志
•Docker 产生的日志都放在哪里
•Docker 的日志的分割、清理策略默认为什么
•如何配置 Docker 日志的分割、清理策略
•Kubernetes 都会产生哪些日志
•Kubernetes 产生的日志都存放在那里
•如何集中管理 Kubernetes 产生的日志
Docker 的日志处理方案Docker 产生的日志有两类:•一类是 Docker 引擎日志
Docker 引擎日志在不同的操作系统下管理方式不一样,在 Centos 中是通过 journalctl 来进行管理
•一类是容器日志
容器中的应用产生的日志默认都输出到 stdout 和 stderr 中,可以通过 dockerlogs 来访问
Docker 为容器日志提供了多种实现机制称为loggingdriver
通过 dockerinfo 可以查看本机使用的 loggingdriver,默认为json-file 形式,这种形式下每个容器的日志默认以 json 格式存储在/var/lib/docker/containers//-json
下面两种情况使用 dockerlogs 看不到什么有用的信息:o 容器内的应用不是交互式应用,而是实现了自己的日志输出,例如对于Apache、Nginx 等 Web 服务,通常会将访问日志和错误日志记录到不同的文件,而不是打到标准输出和错误输出
o 使用不同的 loggingdriver 将日志送到了文件、外部服务器、数据库等集中的日志后台
Docker 目前支持的 loggingdriver 类型:•none•json-fil