0

我的标准输出日志没有显示在 Google 日志查看器中,或者在使用kubectl logs <pod>. 集群启用了 Cloud Logging,并且 fluentd 容器在每个节点上运行。

示例 Python 代码:

logger = logging.getLogger()
logger.setLevel(logging.INFO)
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.INFO)
logger.addHandler(handler)
logger.info("test log")

他们文档中的“counter-pod”示例确实适用于我的集群,因此 fluentd 容器正在获取标准输出并将其发送到日志查看器。

对我应该尝试的事情有什么建议吗?提前致谢。

4

2 回答 2

5

日志肯定会输出到标准输出,只是在运行时没有显示kubectl logs <pod_name>。它们也不会出现在 Google 日志查看器中。

这是因为发送到标准输出的日志只有来自作为 Docker 容器入口点的进程才会被捕获。在 shell 中或通过 cron 作业完成的事情不会出现。

就我而言,我有一个调用脚本的 cron 作业。通过将脚本作为容器的入口点运行,日志显示得很好。

于 2016-06-21T23:32:49.343 回答
0

如果运行时日志没有显示kubectl logs pod,那么问题几乎可以肯定是来自应用程序的日志不会进入 stdout 或 stderr,所以这就是您应该关注的问题。

如果您docker run的应用程序在本地会发生什么?docker logs然后会显示您期望的日志吗?这至少应该让你有一个更快的迭代周期来使用不同的方法来修复它。

于 2016-06-21T02:35:43.120 回答