您是否知道任何不允许在多个k8集群中使用单个ES/kibana作为fluentd目标的陷阱或要求?
我们正在设计一个新的kubernetes模型。我需要运行多个kubernetes集群,比方说4-6。即使工作负载被拆分到多个k8集群中,我也不需要拆分日志记录,并且相信在一个集中的位置找到所有集群中的pods的日志会更容易。对kibana/elasticsearch的维护也更少。
使用EFK for Kubernetes,我可以将来自多个k8集群的Fluentd指向单个ElasticSearch/Kibana吗?我不认为我是第一个有这种想法的人,但是我还没有找到任何关于这样做的讨论。我发现了很多关于建立efk的讨论,但我所找到的只讨论了一个k8到它自己的elasticsearch/kibana。
是否有人使用单个es/kibana来服务来自多个kubernetes集群的日志?我们将继续测试它,但看看是否有其他人已经走上了这条路。
发布于 2019-12-06 06:08:02
我不认为你应该为每个kubernetes集群创建一个弹性实例,你可以运行一个主要的弹性实例并索引它的所有日志。
但是,即使你没有为每个kubernetes客户端提供一个弹性实例,我认为你也应该有一个drp,所以让我们假设直接将所有pod的日志移动到elastic,也许可以将其移动到kafka,然后将其拆分为两个弹性集群。
另外,根据不同的使用场景,如果每个kubernetes集群都在不同的地域,并且您需要低延迟(<1s)的not日志,那么一个弹性实例可能不是正确的答案。
发布于 2019-12-06 07:08:23
基于1,我们可以读到:
Fluentd从集群节点上运行的pod中收集日志,然后将其路由到中央化Elasticsearch。
然后Fluentd 从Fluentd摄取这些日志,并将它们存储在一个中心位置。它还用于高效地搜索文本文件。
Kibana是UI;用户可以可视化收集的日志和指标,并基于查询创建自定义仪表板。
他们有几种方法可以解决你的困境:
a)创建一个集中的仪表板,使用每个集群的Elasticsearch作为后端。这样你就可以在一个地方看到你所有的集群日志。
b)创建一个Elasticsearch集群,并将每个Elasticsearch加入其中。这不是最好的选择,因为您将多次复制数据,您将需要处理每个索引碎片,您将需要与分裂大脑的困境作斗争,但它对数据弹性很好。
c)使用另一种解决方案,如APM (New Relic,Instana等),将日志完全集中在一个地方。
https://stackoverflow.com/questions/59197916
复制相似问题