Google 容器引擎标准输出日志未显示

Google Container Engine stdout Logs Not Showing Up

我的标准输出日志没有显示在 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")

their docs 中的 "counter-pod" 示例在我的集群上运行,因此 fluentd 容器正在获取标准输出并将其发送到日志查看器。

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

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

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

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

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

在我的例子中,我有一个调用脚本的 cron 作业。通过 运行 脚本作为容器的入口点,日志显示正常。