【问题标题】:Cannot see python print statements when I execute kubectl logs <pod>执行 kubectl logs <pod> 时看不到 python 打印语句
【发布时间】:2021-12-07 12:59:28
【问题描述】:

我正在开发一个使用打印语句的简单 python 3 应用程序。 当我执行 kubectl log 命令时,查看日志对我来说至关重要。 但是,日志永远不会出现。 看起来应用程序可能没有在 pod 中运行。 当我执行 kubectl --it exexc 并进入 pod 时,我进入工作目录,然后当我手动执行 python myApp.py 时,它正在打印日志。

我的 Dockerfile 看起来像这样:

FROM python:3.8-slim-buster

ENV PYTHONUNBUFFERED=0

WORKDIR /code

COPY . .

CMD [ "python", "/.main.py" ]

举个简单的例子,我可以使用一段代码来打印:

from time import sleep

while True:
    print("Im printing ...")
    sleep(10)

我的 pod 定义如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: logbox
  namespace: default
spec:
  containers:
    - name: logbox
      image: <8888888888888888>logbox:0.0.1
      imagePullPolicy: "IfNotPresent"
      stdin: true
      args:
        - sh
        - -c
        - sleep infinity

【问题讨论】:

    标签: python python-3.x docker kubernetes


    【解决方案1】:

    可能是 pod 定义中的 args 命令覆盖了 Dockerfile CMD 命令,我会尝试不使用定义 args 或匹配它们(因此 args 调用 python ./main.py

    【讨论】:

    • 这在第一次没有帮助。但是,当我将 ENV PYTHONUNBUFFERED 的 0 更改为 1 时。日志开始了。在其他一些情况下,我在这些 args 之前获得了 CrashLoopBackOffs,所以我认为它们对于 pod 保持运行是必要的。再次感谢!!!
    猜你喜欢
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2021-09-17
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多