设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 安全 > 正文

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

发布时间:2021-01-08 14:27 所属栏目:53 来源:网络整理
导读:Fig06-Elasticsearch的架构 ElasticSearch在Kubernetes中的部署架构 我们在Kubernetes中,数据节点上面通过Kubernetes PVC绑定到相应的数据卷.PV的实际存储可以是NFS、GlusterFS等共享存储. Fig08-ElasticSearch与传

Fig06-Elasticsearch的架构

ElasticSearch在Kubernetes中的部署架构

我们在Kubernetes中,数据节点上面通过Kubernetes PVC绑定到相应的数据卷.PV的实际存储可以是NFS、GlusterFS等共享存储.

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

ElasticSearch在Kubernetes集群中的部署

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

Fig09-ElasticSearch在Kubernetes集群中的部署

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

在部署es-data节点的时候,他们的数据卷我们是以共享存储卷挂载的,这里采用PVC/PV的模式挂载一个NFS的PV提供数据卷,如下图所示.

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

日志的备份和恢复

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

S3仓库:将AWS S3作为备份仓库

安装命令:

sudo?bin/elasticsearch-plugin?install?repository-s3

创建仓库示例:

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

Azure仓库:将Azure作为备份仓库

安装命令:

sudo?bin/elasticsearch-plugin?install?repository-azure

创建仓库示例:

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

HDFS仓库:将HDFS作为备份仓库

安装命令:

sudo?bin/elasticsearch-plugin?install?repository-hdfs

创建仓库示例:

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

GCS仓库:将Google Cloud Storage作为备份仓库

安装命令:

sudo?bin/elasticsearch-plugin?install?repository-gcs

创建仓库示例:

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

作为私有云部署的环境,多数基于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:8080/auth/v1.0/",????"swift_container":?"my-container",????"swift_username":?"myuser",????"swift_password":?"mypass!"
}
}

选用ElasticSearch的理由:

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

Kibana在Kubernetes中的部署

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

整体日志管理系统的架构

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

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

Q&A

Q:请问Kubernetes宿主机的日志是如何收集的?

A:跟收集容器的日志是类似的,事实上容器的日志也是从主机的日志目录收集过来的.

Q:如果把移动设备的整机日志输入系统,尤其是移动设备需要注意哪些问题?产生日志目前想到有两种方案:(1)使用APP转发给Fluentd(2)使用Syslog,个人感觉第二个更合适,或者还有其他更好的方案么?

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读