【问题标题】:Kubernetes logging level --vKubernetes 日志记录级别 --v
【发布时间】:2017-05-18 07:53:50
【问题描述】:

我正在使用 Kubernetes 将 python 脚本作为 cron 作业运行。问题是直到作业完成后我才看到脚本的输出(可能需要一段时间才能运行)。我怀疑这是由于日志记录级别(--v 选项)造成的,但我无法终生找到它的文档(默认为--v=0)。如果我想增加输出内容的详细程度,是否有人知道“INFO”或“TRACE”的值(或者这些值是什么/定义它们的位置)?提前感谢您的帮助。

编辑:是否有人在 Kubernetes pod 运行时成功获取了 python 文件以登录到 Kubernetes pod?如果是这样,您是使用 print() 还是其他日志框架?

【问题讨论】:

  • 这可能是您的 python 脚本的行为吗?你确定它会输出到标准输出吗?
  • @thisguy123 谢谢。我想我正在记录到标准输出,我在 python 中使用标准的 print() 语句(据我所知,它总是记录到标准输出)。每当我在本地运行脚本时,它肯定会记录到标准输出。我也尝试登录到 stderr,但没有使用 - 仍然显示“所选容器尚未记录任何消息。”
  • @thisguy123 奇怪的是,在我的脚本完成运行后,我确实看到了日志(我正在执行 print() -> 在 for 循环中睡眠有限次)。当 pod 遇到 crashbackLoop(即脚本完成时)时,日志会转储到日志文件中。有没有办法在容器运行时显示日志?
  • 作为参考,我创建了一个非常简单的脚本来测试:` import sys import time def do_run(): print("Hello world1") print("hello world error", file=sys.stderr ) time.sleep(120) if name == "main": do_run() `

标签: logging kubernetes


【解决方案1】:

根据 Kubernetes docs

If you don't see much useful in the logs, you could try turning on 
verbose logging on the Kubernetes component you suspect has a problem 
using --v or --vmodule, to at least level 4. See 
https://github.com/golang/glog for more details.

【讨论】:

  • 你知道这是否是从 pod 本身记录的吗?或者只是从 Kubernetes 组件进行日志记录(正如我认为的那样)?我正在尝试在我的 pod 运行时从我的 pod 中获取日志。
  • @fylie,您发布的链接现在已过时。但是,我在archive.org 上找到了一份副本:web.archive.org/web/20160121210548/https://github.com/…
【解决方案2】:

找到根本原因。具体来说,在 Python app does not print anything when running detached in docker 找到它。解决方案是设置以下环境变量: PYTHONUNBUFFERED=0 。不是没有显示打印语句,而是正在缓冲打印语句。执行上述操作即可解决问题。感谢 @thisguy17 和 @fylie 的协助。

【讨论】:

    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多