加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

Kubernetes容器集群中的日志系统集成实践

发布时间:2021-01-08 20:01:10 所属栏目:安全 来源:网络整理
导读:副标题#e# 《Kubernetes容器集群中的日志系统集成实践》要点: 本文介绍了Kubernetes容器集群中的日志系统集成实践,希望对您有用。如果有疑问,可以联系我们。 Kubernetes是原生的容器编排管理系统,对于负载均衡、服务发现、高可用、滚动升级、自动伸缩等
副标题[/!--empirenews.page--]

《Kubernetes容器集群中的日志系统集成实践》要点:
本文介绍了Kubernetes容器集群中的日志系统集成实践,希望对您有用。如果有疑问,可以联系我们。

 

Kubernetes是原生的容器编排管理系统,对于负载均衡、服务发现、高可用、滚动升级、自动伸缩等容器云平台的功能要求有原生支持.今天我分享一下我们在Kubernetes集群中日志管理的实践方案.在这个方案中,除了Docker和Kubernetes,主要还涉及的技术包括:Fluentd、Elasticsearch、Kibana和Swift.

Fig00-Kubernetes日志系统中涉及的技术

评估容器云平台日志系统的标准:

  1. 易扩展:能够支撑集群规模的增长
  2. 开销低:尽量占用较少的系统资源
  3. 入侵小:尽量不需要改动应用容器和云平台系统
  4. 大集中:将所有分布在各个主机节点上的日志集中在一起分析和查询
  5. 易部署:方便自动化部署到分布式集群中
  6. 易定制:方便处理不同日志格式,方便对接不同的存储方式
  7. 实效性:日志在产生之后需要能在短时间内即可以进行查看分析
  8. 社区活跃:方便未来的维护和更新,方便功能扩展
Fluentd的介绍

Fluentd是一个实时日志收集系统,它把JSON作为日志的中间处理格式,通过灵活的插件机制,可以支持丰富多样的日志输入应用、输出应用、以及多种日志解析、缓存、过滤和格式化输出机制.

Fluentd的架构

Fluentd将JSON作为数据处理的中间格式,通过插件式的架构可扩展地支持不同种应用或系统作为日志源和日志输出端.假设有M种输入源Wordpress、MySQL、Tomcat……;N种输出端MySQL、MongoDB、ElasticSearch……那么处理日志的代码模块由MxN减少为M+N.我们在Kubernetes集群中收集日志主要用到https://hub.docker.com/r/fabric8/fluentd-kubernetes/这个镜像和https://github.com/fabric8io/docker-fluentd-kubernetes这个Plugins.

Fig01-Fluend架构

Fig02-Fluentd功能

Fluentd的特点:

  1. 将JSON作为统一的中间层日志格式做日志处理
  2. 基于Ruby的日志收集工具:较基于JRuby的Logstash的Footprint小
  3. 兼容的输入源输出端基本和Logstash相当
  4. 性能相关的部分为C代码:速度较快
  5. 支持插件扩展:Input、Parser、Filter、Output、Formatter and Buffer

Fluentd在Kubernetes集群中的部署架构

每个Node节点上都要有Fluentd-Elasticsearch这个Pod,有两种方式支持:1. 放在/etc/kubernetes/manifest下,用脚本自动启动;2. 用DaemonSet启动.这两种模式都是为了保证在每一个Kubernetes集群节点上都有一个Fluentd的驻留Pod运行来收集日志.Kubernetes中DaemonSet这个API对象就是为了驻留Pod而设计的.

Fig03-Fluentd在Kubernetes集群中的部署架构

在Kubenetes中的部署案例YAML

在Kubernetes集群中部署Fluentd时,可以采用类似下面的YAML文件,将使用Docker镜像Fluentd-Elasticsearch的Pod部署到每一个Kubernetes节点上.

Fig04-Fluentd在Kubernetes集群中的部署YAML

Fluentd pod的运行时状态:

Fig05-Fluentd在Kubernetes集群中的运行状态

选用Fluentd的理由:

  • 开销低:核心代码为C,插件代码为Ruby,不需要打包JDK
  • 入侵小:用Pod部署,不干扰应用容器和主机服务
  • 易部署:使用容器镜像作为单容器Pod部署
  • 易定制:很方便增加和更改适合自己应用的插件
ElasticSearch

Elasticsearch是一个实时的分布式搜索和分析引擎.它可以用于文档存储,全文搜索,结构化搜索以及实时分析,与常见的互联网应用最典型的应用场景是日志分析查询和全文搜索.

ElasticSearch的架构

在ElasticSearch中有三类节点:第一类是Data Node,用来存储数据,ElasticSearch中对于一份数据可以有多个副本,以提供数据高可用能力;第二类是Client Node,或者叫查询节点,提供对查询的负载均衡;第三类是Master Eligible node,或者叫索引节点,这些节点可以被选举为Master Node,而Master Node会控制整个ElasticSearch集群的状态.

Fig06-Elasticsearch的架构

ElasticSearch在Kubernetes中的部署架构

我们在Kubernetes中,三类节点都是一个包含同一个镜像Pod
elasticsearch-cloud-kubernetes,区别只是启动时的环境role不一样.查询和索引节点需要提供对外的Web服务,需要发布为一个Kubernetes Service.数据节点需要绑定一个持久化存储,我们用Kubernetes PV创建出存储卷,数据节点上面通过Kubernetes PVC绑定到相应的数据卷.PV的实际存储可以是NFS、GlusterFS等共享存储.

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读