[Kubernetes] PythonのprintがPodのlogsに出ない

スポンサーリンク

KubernetesにおいてPodのコンテナプログラムの標準出力はログとして自動的に収集され、
kubectl logs [Pod名]
とかダッシュボードのログ表示とかで確認することが出来ます。
しかしPythonでprintで標準出力したところそれが何故か動かないのでググって解決しました。

解決策

出力のバッファリングが原因のようです。
python -u [スクリプトファイル]
のように-uオプションを入れると強制的にバッファリングをオフに出来ます。
DockerfileのCMDに書くなら
CMD [“python”, “-u”, “hoge.py”]
のような感じです。

他に環境変数
PYTHONUNBUFFERED=0
を設定するという策もstackoverflow先生に書いてありましたが自分の環境では-uしか効果がありませんでした。

参考:Python app does not print anything when running detached in docker – Stack Overflow

コメント