如何处理 Kubernetes 中的日志密集型 Pod?

问题描述 投票:0回答:1

大家好,

我们目前 AWS EKS 集群中的一个 Pod 存在问题。 Pod 日志记录相当多,并且会定期被驱逐,因为它超出了临时存储限制。不幸的是,我们正在运行带有 docker 容器引擎的旧版本 EKS,但我们的目标是尽快迁移到新版本。目前,我们还没有配置任何日志轮换。

在思考避免这种行为的方法时,我想到了两种可能性:

  1. 删除当前设置的临时存储限制,并使用日志轮换工具(例如 Fluentd)在节点级别轮换日志。
  2. 有一个 sidecar 容器,可以以某种方式清除/旋转容器内的日志(是否可以将日志写入标准输出?)

理想情况下,我希望有一个混合解决方案,如果需要的话,可以允许临时存储限制,但避免用日志填充它。我想知道一段时间后情况 1 会发生什么。内存消耗会增加吗?这似乎是一个非常标准的问题,但在我的研究过程中我无法找到令人满意的答案。您通常如何处理 Kubernetes 中的日志密集型 pod?

感谢您提前提供任何提示和答案

amazon-web-services kubernetes amazon-eks fluentd
1个回答
0
投票

我会考虑走另一条路 更改临时存储限制或添加 sidecar 容器以进行日志轮换。

自 K8S

v1.21
Kubelet 负责通过与容器运行时通信(使用 CRI)来轮转容器日志。

这里

您可以配置两个 kubelet 配置设置,

containerLogMaxSize
(默认 10Mi)和
containerLogMaxFiles
(默认 5)、使用kubelet配置文件。这些设置可以让你 配置每个日志文件的最大大小和最大数量 每个容器分别允许的文件。

因此,您可以配置 Kubelet 以更频繁地轮换日志(通过每次轮换更多日志)。

(*) 如果相关:
如果 1 分钟默认值不够,请调整 FluentD 的

flush_interval

您还可以增加
buffer_chunk_limit

© www.soinside.com 2019 - 2024. All rights reserved.