【问题标题】:Limit logs in kubernetes限制 Kubernetes 中的日志
【发布时间】:2021-01-13 17:24:15
【问题描述】:

我遇到了问题,因为我的容器产生了太多的日志输出。这显然会导致保留空间用完并使用消息The node was low on resource: ephemeral-storage. Container XYZ was using 1412Ki, which exceeds its request of 0. 驱逐 pods

有没有办法让 kubernetes 忘记旧日志?我可以说“每个 pod 10MB 的日志绰绰有余”,但我找不到任何地方来指定这样的事情。

这是否是时间或大小的限制对我来说并不重要,只要我能保持我的豆荚活着。这是针对开发环境的,因此日志保留根本不重要。

【问题讨论】:

  • 您是否将日志写入容器内的文件?也许解决方案可能是禁用此输出。所有常见的日志聚合系统都使用 stdout/stderr 输出,这些输出也由容器运行时写入磁盘并从那里抓取。
  • @alexzimmer96 我不将日志写入文件。一切都进入标准输出/标准错误。我只使用kubectl logs 跟踪日志。

标签: logging kubernetes limit kubernetes-pod


【解决方案1】:

我假设容器引擎是 docker,在这种情况下,您可以配置 docker 以限制您的 pod(s) 容器写入的日志。

https://docs.docker.com/config/containers/logging/configure/

【讨论】:

  • 我确实在使用 docker,所以这看起来很有希望。感谢分享。我会配置并希望我永远不会看到那些 POD 被驱逐...
  • @stefan - 你解决了这个问题吗?如果是这样,它是否与此处提供的链接有关?你能提供一些细节吗?谢谢。
  • @grt3kl 我再也没有遇到过这个问题,但这并不意味着它已经修复。我非常有信心它已经修复,所以我建议只使用提供的两个答案中的资源(他们基本上说的是同一件事)
【解决方案2】:

这是一个社区 Wiki 答案,因此请随时对其进行编辑并添加您认为重要的任何其他详细信息。

由于William 已经回答了这个问题,所以我将添加一些细节以使其更完整。

请查看官方 kubernetes 文档中的 Logging Architecture。如您所见here “Kubernetes 目前不负责轮换日志,但部署工具应该设置一个解决方案来解决这个问题。”

如果您的容器运行时恰好是 docker,您可以通过编辑/创建来设置日志轮换策略:

/etc/docker/daemon.json

(在 Linux 主机上)

或:

C:\ProgramData\docker\config\daemon.json

(在 Windows 主机上)

可能如下所示:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3",
    "labels": "production_status",
    "env": "os,customer"
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2018-03-14
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 2011-06-22
    • 2014-08-01
    相关资源
    最近更新 更多