K8S 生产实践-15-1-常见日志采集问题和解决方案分析

一、k8s中的日志处理

传统服务 VS k8s 中的服务

传统 k8s
固定机器、固定目录 节点不固定
不受重启影响 重启服务会漂移
不用关注 stdout、stderr 需关注 stdout、stderr

k8s 的日志

stdout、stderr

/var/lib/docker/containers/<cname>/<cname>-json.log

日志文件

应用的日志文件,docker重启后就会丢失。

常见方案-远程日志

file

常见方案-sidecar

file

在每个 Pod 中跑一个sidecar,sidecar 会和主容器共享 Volume,可以访问所有日志文件,这种做法很简单,对服务没有侵入,但是对Pod有一定的侵入,毕竟每个Pod都多了个容器,同时与主容器共享 Volume,内存和CPU这种消耗是不可避免的,社区并不推荐这种方案。

常见方案-LogAgent

file

我们的实践方案

file

LogPilot

  • 智能的容器日志采集工具
  • 自动发现机制
  • 2017年初在GitHub开源

    LogPilot

为者常成,行者常至