0

您是否知道任何不允许在多个 k8 集群中使用单个 ES/kibana 作为 fluentd 目标的问题或要求?

我们正在设计推出一个新的 kubernetes 模型。我有运行多个 kubernetes 集群的要求,比如说 4-6。即使工作负载被拆分到多个 k8 集群中,我也不需要拆分日志记录,并且相信在一个集中位置找到所有集群中 pod 的日志会更容易。对 kibana/elasticsearch 的维护也更少。

使用 EFK for Kubernetes,我可以将来自多个 k8 集群的 Fluentd 指向单个 ElasticSearch/Kibana 吗?我不认为我是第一个有这种想法的人,但是我找不到任何关于这样做的讨论。发现了很多关于设置 efk 的讨论,但我发现的所有讨论都只讨论了一个 k8 到它自己的 elasticsearch/kibana。

有没有其他人走上了使用单个 es/kibana 为来自多个 kubernetes 集群的日志提供服务的道路?我们将继续测试它,但看看是否有其他人已经走上了这条路。

4

2 回答 2

1

我不认为你应该为每个 Kubernetes 集群创建一个弹性实例,你可以运行一个主弹性实例并将它的所有日志索引。

但是,即使您没有为每个 kubernetes 客户端提供弹性实例,我认为您应该有一个 drp,所以让我们说直接将所有 pod 的日志移动到弹性,也许将其移动到 kafka,然后将其拆分为两个弹性集群。

此外,如果每个 Kubernetes 集群都在不同的区域上,并且您需要低延迟(<1s)的 pod 日志,那么这非常取决于用例,所以一个弹性实例可能不是正确的答案。

于 2019-12-05T22:08:01.820 回答
0

根据[1],我们可以阅读:

Fluentd从集群节点上运行的 pod 中收集日志,然后将它们路由到一个集中的​​​​​​​Elasticsearch。

然后Elasticsearch从 Fluentd 提取这些日志并将它们存储在一个中心位置。它还用于有效地搜索文本文件。

Kibana是 UI;用户可以可视化收集的日志和指标,并根据查询创建自定义仪表板。

他们有几种方法可以解决您的困境:

a) 创建一个集中式仪表板并使用每个集群的 Elasticsearch 作为后端。因此,您可以在一处查看所有集群日志。

b) 创建一个 Elasticsearch 集群并将每个 Elasticsearch 添加到其中。这不是最佳选择,因为您将多次复制数据,您将需要处理每个索引分片,并且您需要与脑裂困境作斗争,但它对数据弹性非常有用。

c) 使用另一种解决方案,如 APM(New Relic、Instana 等)将您的日志完全集中在一个地方。

[1] https://techbeacon.com/enterprise-it/9-top-open-source-tools-monitoring-kubernetes

于 2019-12-05T23:08:22.590 回答