k8s 日志收集介绍

1. 收集那些日志

  • k8s系统的组件日志
  • k8s cluster里面部署的应用程序日志
    • 标准输出
    • 日志文件

2. elk stack日志收集方案

  • 架构图
    image

image

ELK 是三个开源软件的缩写,提供一套完整的企业级日志平台解决方案。
分别是:

  • Elasticsearch:搜索、分析和存储数据
  • Logstash :采集日志、格式化、过滤,最后将数据推送到Elasticsearch存储
  • Kibana:数据可视化
  • redis:可以作为数据缓存做准备
  • Beats :集合了多种单一用途数据采集器,用于实现从边缘机器向Logstash 和Elasticsearch 发送数据。里面应用最多的是Filebeat,是一个轻量级日志采集器。

3. 容器中的日志怎么收集的

  • 方案一:Node上部署一个日志收集程序

    • DaemonSet方式部署日志收集程序
    • 对本节点/var/log/kubelet/pods和/var/lib/docker/containers/两个目录下的日志进行采集
    • Pod中容器日志目录挂载到宿主机统一目录上

    1608887466709

  • 方案二:Pod中附加专用日志收集的容器

    • 每个运行应用程序的Pod中增加一个日志收集容器,使用emtyDir共享日志目录让日志收集程序读取到。
      image
  • 方案三:应用程序直接推送日志

    • 超出Kubernetes范围
      image

4. 日志收集三种的优缺点

方式 优点 缺点
方案一:Node上部署一个日志收集程序 每个Node仅需部署一个日志收集程序,资源消耗少,对应用无侵入 应用程序日志如果写到标准输出和标准错误输出,那就不支持多行日志
方案二:Pod中附加专用日志收集的容器 低耦合 每个Pod启动一个日志收集代理,增加资源消耗,并增加运维维护成本
方案三:应用程序直接推送日志 无需额外收集工具 浸入应用,增加应用复杂度
posted @ 2021-11-12 10:49  七月流星雨  阅读(830)  评论(0编辑  收藏  举报