DockOne微信分享(七十二):Kubernetes容器集群中的日志系统集成实践

  • 时间:
  • 浏览:0
  • 来源:uu快3注册_uu快3官网

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而设计的。

elasticsearch-cloud-kubernetes,区别就是启动时的环境role不一样。查询和索引节点时需提供对外的Web服务,时需发布为一个多多多Kubernetes Service。数据节点时需绑定一个多多多持久化存储,一群人都都一群人都都一群人都都 用Kubernetes PV创建出存储卷,数据节点上边通过Kubernetes PVC绑定到相应的数据卷。PV的实际存储时需是NFS、GlusterFS等共享存储。

Fig05-Fluentd在Kubernetes集群中的运行具体情况确定Fluentd的理由:

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

ElasticSearch

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

创建仓库示例:

PUT _snapshot/my-gcs-repository-1
{
"type": "gcs",
"settings": {
"bucket": "my_bucket",
"service_account": "_default_"
}
}  

Fig01-Fluend架构

Fig04-Fluentd在Kubernetes集群中的部署YAMLFluentd pod的运行时具体情况:

创建仓库示例:

PUT _snapshot/my-hdfs-repository-1
{
"type": "hdfs",
"settings": {
"uri": "hdfs://namenode:300020/",
"path": "elasticsearch/respositories/my_hdfs_repository",
"conf.dfs.client.read.shortcircuit": "true"
}
}  

Fig09-ElasticSearch在Kubernetes集群中的部署

ElasticSearch数据在Kubernetes集群中的持久化存储

在部署es-data节点的前一天,一群人都都一群人都都一群人都都 的数据卷一群人都都一群人都都一群人都都 是以共享存储卷挂载的,这里采用PVC/PV的模式挂载一个多多多NFS的PV提供数据卷,如下图所示。

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

作为私有云部署的环境,多数基于OpenStack的IaaS层,时需采用OpenStack的对象存储Swift作为备份。Swift仓库:将OpenStack Swift作为备份仓库安装命令:

sudo bin/elasticsearch-plugin install org.wikimedia.elasticsearch.swift/swift-repository-plugin/2.1.1
创建仓库示例:
PUT _snapshot/my-gcs-repository-1
{
"type": "swift",
"settings": {
    "swift_url": "http://localhost:30003000/auth/v1.0/",
    "swift_container": "my-container",
    "swift_username": "myuser",
    "swift_password": "mypass!"
}
}  

Fig06-Elasticsearch的架构

ElasticSearch在Kubernetes中的部署架构

一群人都都一群人都都一群人都都 在Kubernetes中,三类节点都不 一个多多带有同一个多多多镜像Pod

Fig07-ElasticSearch在Kubernetes中的部署架构

ElasticSearch的特点

  • 搜索引擎:基于Apache Lucene的全文搜索引擎,作为开源搜索引擎应用案例日后日后刚开始 比solr更流行
  • 文档数据库:时需作为文档数据库使用,存储文档大数据,日志大数据
  • 实时数据分析查询系统:支持大数据量的实时节 析查询
  • 完全分布式:可随着节点数水平扩展存储量和查询时延
  • 高可用:时需自动检测破坏的分片,自动重新平衡各个节点上存储的分片数据,可备份冷数据到对象存储
  • 支持插件扩展:可自定义插件支持不同的备份目标

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

在Kubenetes中的部署案例YAML

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

GCS仓库:将Google Cloud Storage作为备份仓库安装命令:

sudo bin/elasticsearch-plugin install repository-gcs

Fig10-ElasticSearch数据在Kubernetes集群中的持久化存储

日志的备份和恢复

ElasticSearch允许对于单个索引或整个集群做备份和恢复。备份恢复所支持的目标存储仓库类型包括:

原文标题:DockOne微信分享(七十二):Kubernetes容器集群中的日志系统集成实践

本文作者:王昕

创建仓库示例:

PUT _snapshot/my-s3-repository-1
{
"type": "s3",
"settings": {
"bucket": "s3_repository_1",
"region": "us-west"
}
}   

Fig00-Kubernetes日志系统中涉及的技术评估容器云平台日志系统的标准:

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

Fluentd的介绍

Fluentd是一个多多多实时日志下发系统,它把JSON作为日志的上边除理格式,通过灵活的插件机制,时需支持富足多样的日志输入应用、输出应用、以及多种日志解析、缓存、过滤和格式化输出机制。

HDFS仓库:将HDFS作为备份仓库安装命令:

sudo bin/elasticsearch-plugin install repository-hdfs

本文来自云栖社区媒体媒体合作伙伴Dockerone.io,了解相关信息时需关注Dockerone.io。

Fig12-整体Kubernetes日志管理系统的架构

Q&A

Q:请问Kubernetes宿主机的日志是怎么下发的?

以上内容根据2016年7月28日晚微信群分享内容下发。分享人王昕,清华大学通信硕士,ISC2认证信息系统安全专家(CISSP),资深架构师和软件开发专家。曾任VMware、IBM高级研发经理,BEA、Lucent高级工程师,从事十余年企业上边件、PaaS平台和SDN等产品的研发工作,有十多项美国和生国的在审专利科学创造发明。现为轻元首席架构师。 DockOne每周后要组织定向的技术分享,欢迎感兴趣的同学加微信:liyingjiesz,进群参与,您有想听语录题可能想分享语录题时需给一群人都都一群人都都一群人都都 留言。

S3仓库:将AWS S3作为备份仓库安装命令:

sudo bin/elasticsearch-plugin install repository-s3

Fig08-ElasticSearch与传统数据库的对比

ElasticSearch在Kubernetes集群中的部署

在Kubernetes集群中部署ElasticSearch,一群人都都一群人都都一群人都都 会部署类式 图中的3种节点:es-data类是用来存放索引数据的;es-master类是用来提供索引写服务的;es-client是用来提供索引查询服务的。

确定ElasticSearch的理由:

  • 易扩展:时需随着增加节点水平扩展存储容量和索引能力
  • 大集中:将所有Pod和容器的数据集中在同时方便查询和分析
  • 易部署:使用容器镜像作为单容器Pod部署
  • 易定制:很方便增加和更改适合买车人应用的插件
  • 实效性:日志在产生前一天时需能在短时间内即时需进行查看分析
  • 社区活跃:ElasticSearch社区没法活跃,大有赶超Solr之势

Kibana

Kibana在Kubernetes中的部署

Kibana跟ElasticSearch的集成相对来说比较直观,利用https://hub.docker.com/r/fabric8/kibana4/镜像,设置好ELASTICSEARCH_URL参数就时需,Kibana是一个多多多部署在Kubernetes集群中的Web前端服务,而它引用ELASTICSEARCH_URL这些 环境变量作为资源使用。

Fig11-在Kubernetes集群中部署Kibana

整体日志管理系统的架构

在Kubernetes集群中的每个节点上运行一个多多多Fluentd的容器,下发容器的日志发送给到ElasticSearch集群中。ElasticSearch集群会保存一周的日志作为热数据以供实时节 析和查询,用户时需通过Kibana查看任意Node、Namespace、Service、Pod和容器的数据。对于超过一周的日志数据,ElasticSearch会自动备份到Swift对象存储的相应Bucket中。

创建仓库示例:

PUT _snapshot/my-azure-repository-1
{
"type": "azure",
"settings": {
    "container": "backup-container",
    "base_path": "backups",
    "chunk_size": "32m",
    "compress": true
}
}  

Azure仓库:将Azure作为备份仓库安装命令:

sudo bin/elasticsearch-plugin install repository-azure

原文发布时间为:2016-08-02