1. <dd id="erndk"></dd>
                1. 【k8s】python日志在容器內不顯示

                  互聯網 2022/4/26 1:42:36

                  現象 構建python服務鏡像。在使用k8s pod部署時,kubectl logs不顯示日志,而過段時間kubectl logs又能夠看到日志。 其中,容器內通過python main.py啟動python服務所有的日志使用print打印。 在使用docker run 啟動容器時,docker logs 能夠查看日志 根因結論 在k8s啟動…

                  現象

                  構建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即可

                  隨時隨地學軟件編程-關注百度小程序和微信小程序
                  關于找一找教程網

                  本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。
                  本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。
                  [【k8s】python日志在容器內不顯示]http://www.yachtsalesaustralia.com/tech/detail-317094.html

                  贊(0)
                  關注微信小程序
                  程序員編程王-隨時隨地學編程

                  掃描二維碼或查找【程序員編程王】

                  可以隨時隨地學編程啦!

                  技術文章導航 更多>
                  国产在线拍揄自揄视频菠萝

                        1. <dd id="erndk"></dd>