GKE Fluent bit 部分日志

GKE Fluent bit partial logs

我在 GCP 中有 K8S 集群(版本是 1.20.8-gke.900 来自常规更新频道)。 所有集群 pods 从 Docker 容器中将日志写入 STDOUTSTDERR

几周前,我们发现 GCP 日志记录控制台中缺少一些日志条目。我可以通过 kubectl 工具看到它们,但看起来它们没有到达日志桶。例如,我可以在带有无效负载的 pod 中点击 API 来模拟日志中的错误,有时这个错误会到达日志桶,有时不会。对我来说超级奇怪...

集群内的流量和资源利用率超低

据我了解 fluent bit daemonset 负责从 pods 获取日志并将它们传递到日志存储桶中。 fluent bit 当前版本:gke.gcr.io/fluent-bit:v1.5.7-gke.1 & gke.gcr.io/fluent-bit-gke-exporter:v0.16.2-gke.0.

我在 Fluent 位日志中没有看到任何错误...

能否请您建议如何处理 trace/debug/troubleshoot 这种情况?

谢谢!

问题似乎出在日志量上。 managed GKE logging 代理保证至少 100KiB/s 的吞吐量,性能可能更高,具体取决于其他节点因素。

如果您在 GKE 节点上的工作负载生成的数据量明显超过 100KiB/s,则可能是由于日志量的缘故未收集日志。

如果您生成的速度超过 100kb/s,则有一些解决方法:

  1. 生成更少的日志。
  2. 让有问题的节点部分空闲。这将允许 fluentbit 获得额外的 cpu 周期并处理更多日志。
  3. 运行您自己的 fluentbit 实例,具有更高的资源分配。

100kb/s 限制的根本原因是我们只为 fluentbit 分配了少量资源,以便为您的工作负载留出更多可用资源。

有关其他信息,请参阅 link