当前位置: 萬仟网 > IT编程>软件设计>架构 > K8s~为pod添加sidecar进行日志收集

K8s~为pod添加sidecar进行日志收集

2020年01月11日  | 萬仟网IT编程  | 我要评论

我们在k8s部署服务时,一般来说一个服务会对应一类pod,而pod通过rs实现副本集,而这些pod的日志一般有控制台stdout和文件的,一般会把这些日志最终输出到elasticsearch里,再通过kabana进行分析,而在实现由pod到elasticsearch(es)时有多种方法,下面我列举一下:

  1. 直接从标准控制台 stdout中通过fluentd进行收集,再存到es( 早期docker有实现)
  2. 通过logback里的fluentd包,直接把日志输出到fluentd,再存到es
  3. 在k8s里,可以为pod添加一个边车(边斗,sidecar),这个边车主要是fluentd插件,从容器日志文件里读取日志,收集到es

从上面的解析可以看到第1种如果你是docker swarm环境可以使用,而第2种与业务代码耦合太紧也不合适,只有第三种是未来的趋势,目前大都是使用这种方式!

实现方式

1 sidecar的fluentd的mapconfig

apiversion: v1
kind: configmap
metadata:
  name: fluentd-config
  namespace: saas
data:
  fluentd.conf: |
    <source>
      type tail
      format none
      path /var/log/*.log
      pos_file /var/log/log.pos
      tag saas
    </source>

    <match **>
      @id elasticsearch
      @type elasticsearch
      @log_level debug
      index_name fluentd
      type_name _doc
      host elasticsearch.elk
      port 9200
      include_tag_key true
      tag_key @log_name