首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes日志收集解决方案

Kubernetes日志收集解决方案

作者头像
用户5166556
发布2020-01-17 17:21:48
1.6K0
发布2020-01-17 17:21:48
举报

"本文主要讲解在kubernetes集群环境下日志收集组件选型及方案"

1、需求来源

在大规模集群部署的场景下,容器实例会部署到多个节点上,节点以及节点上的应用产生的日志会随之分散在各个容器的主机上,传统的集群应用大多在本地持久化,这给整个应用系统的日志监控和故障排除带来了很大的挑战,而在Kubernetes大规模集群环境下,需要考虑把分散在各个节点上的日志统一采集,统一管理,统一展示。

2、日志来源

  • 主机内核日志

主机内核产生的错误日志通常可以帮助开发者诊断因为主机或者OS异常而带来的服务异常,比如网络异常,文件系统异常等。

  • 核心组件日志

docker的日志帮助用户查看pod内部容器的运行状态、APIServer的日志,Scheduler产生的日志能够帮助用户查看Kubernetes本身运行产生的日志。

  • 应用自身日志

通常业务升级或者在某种场景下出现异常,可以通过日志进行排查。

3、日志收集方式

  • 宿主机文件

Pod应用的数据存储在宿主机文件系统中,比如我们通过hostpath声明把业务日志存储在某个目录下,通常会在每个节点上以DaemonSet形式部署fluentd或者filebeat,将宿主机的文件系统挂载到fluentd或者filebeat Pod中内进行采集,当然我们也可以采集其它日志(操作系统产生日志,Kubernetes组件产生日志等)如下图所示:

  • 容器内的文件

一种sidecar的日志收集模式,将日志收集容器和应用容器部署在同一个pod中,通过共享volume的形式实现对容器日志的收集,然后输出到节点上,这种收集一般针对日志准确性要求比较高的应用,通过这种方式我们可以定制当前容器内的文件名、pod的ip等。如下图所示:

  • 容器内直接输出

Pod应用直接将数据存储在共享文件系统中(NFS、hdfs、ceph、GlusterFS等)。nfs日志存储使用介绍 这种情况下我们可以直接在当前文件系统中查看日志,或者在存储日志所在节点部署日志收集pod,把日志传输到日志系统。如下图所示:

4、日志收集存储实例

日志存储和查询方面比较建议使用ELK(logstash耗费资源较多,建议换成filebeat或者fluentd进行日志收集传递)成熟解决方案,因为ES原生支持多租户的使用场景,支持通过建立不同的索引方式来区分不同用户,不同业务类型的数据; fluentd在启动后会根据配置文件中的logstash_prefix,在ES中生成指定前缀的索引,在Kibana界面创建显示索引时,可以根据之前日志前缀设定匹配和监控产生日志数据,如下图所示:

针对大规模的持续增长的应用业务日志,在传统单机业务模式下会存储固定几天的数据,在万物互联的今天,我们不但需要快速实时的监控集群中的日志数据,更需要将这些数据进行持久化存储,方便我们基于这些数据进行数据挖掘、统计、分析建模或者根据用户的行为日志做预测工作,当然这些工作我们可以使用大数据分析解决方案(hadoop+spark)对数据进行具体分析管理。

5、总结

本次主要介绍了Kubernetes集群模式下三种日志收集模式,结合实际使用场景采用不同的日志收集方案满足具体需求。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术爱好者社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档