【k8s】python日志在容器内不显示
2022/4/26 1:42:36
本文主要是介绍【k8s】python日志在容器内不显示,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
现象
构建python服务镜像。在使用k8s pod部署时,kubectl logs不显示日志,而过段时间kubectl logs又能够看到日志。
其中,容器内通过
python main.py
启动python服务所有的日志使用print打印。
在使用docker run 启动容器时,docker logs 能够查看日志
根因结论
在k8s启动的pod会触发python print的buffer,导致print不能直接输出到控制台。只有当buffer满了才会输出到控制台
快速解决
参考链接 修改dockerfile,将最后
python main.py
改为
python -u main.py
根因分析
k8s pod底层继承于docker的deamon机制,即将pid为1的主程序以及其子程序的标准控制台输出追踪,并存储至/var/lib/docker/containers/<容器id>/<容器id>-json.log。
在使用docker logs/kubectl logs进行日志获取
参考链接
因此在部署python的容器服务时,docker logs/kubectl logs获取不到的主要原因是print的标准控制台输出,产生了buffer,导致控制台输出不及时。解决该缓存问题或者禁止buffer即可
这篇关于【k8s】python日志在容器内不显示的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在Kubernetes (k8s) 中搭建三台 Nginx 服务器怎么实现?-icode9专业技术文章分享
- 2024-11-05基于Kubernetes的自定义AWS云平台搭建指南
- 2024-11-05基于Kubernetes Gateway API的现代流量管理方案
- 2024-11-05在Kubernetes上部署你的第一个应用:Nginx服务器
- 2024-11-05利用拓扑感知路由控制Kubernetes中的流量
- 2024-11-05Kubernetes中的层次命名空间:更灵活的资源管理方案
- 2024-11-055分钟上手 Kubernetes:精简实用的 Kubectl 命令速查宝典!
- 2024-10-30K8s 容器的定向调度与亲和性
- 2024-10-28云原生周刊:K8s未来三大发展方向 丨2024.10.28
- 2024-10-25亚马逊弹性Kubernetes服务(EKS)实战:轻松搭建Kubernetes平台