Kubernetes 未记录打印

问题描述 投票:0回答:3

我有一个简单的 python 2.7 程序在 Kubernetes (AKS) 容器中运行,它将调试信息打印到标准输出

response = requests.post(uri,data=body, headers=headers)
if (response.status_code >= 200 and response.status_code <= 299):
    print 'Accepted ' + log_type + ' on ' + rfc1123date
else:
    print "Response code: {}".format(response.status_code)

我没有看到它与

kubectl logs container_name
,输出为空(但我知道它很好,因为发布成功)。我尝试在 Dockerfile 中将
"-u"
添加到
CMD ["-u","syslog2la.py"]
,但没有帮助。如何在“kubectl日志”中获取python打印?

python logging kubernetes python-2.x kubectl
3个回答
17
投票

将以下内容添加到您的 Dockerfile 中:

ENV PYTHONUNBUFFERED=0

4
投票

将其添加到您的 Dockerfile 中:

ENV PYTHONUNBUFFERED=1

归功于@frederix


0
投票

这也是可能的:
只需将

all print
替换为
sys.stderr.write()

示例:

import sys

print(out_text)
sys.stderr.write(out_text + "\n")

最后请注意

\n

© www.soinside.com 2019 - 2024. All rights reserved.