我正在运行一个包含三个容器的部署,分别是应用程序,nginx和云sql实例。我的基于python的应用程序中有很多打印语句。
每次用户与该应用进行交互时,都会输出输出。我想知道这些日志是否默认保存在任何位置。
我担心这些日志可能会占用运行它的集群中节点上的空间。这会发生吗?或Kubernetes部署默认情况下不保存任何日志?
答案 0 :(得分:1)
应用程序通常在Docker下的容器中运行,并且stdout / stderr日志在该容器的生命周期内保存在图形目录(通常为/var/lib/docker
)中
您可以使用以下任意一种查看日志:
$ kubectl logs <pod-name> -c <container-in-pod>
或者:
$ ssh <node>
$ docker logs <container>
如果您想进一步了解它们的存储位置,可以进入/var/lib/docker
目录并查看以JSON格式存储的日志:
$ cd /var/lib/docker/containers
$ find . | grep json.log
./3454a0681100986248fd81856fadfe7cd95a1a6467eba32adb33da74c2c5443d/3454a0681100986248fd81856fadfe7cd95a1a6467eba32adb33da74c2c5443d-json.log
./80a87a9529a55f8d3fb9b814f0158dc91686704222e252b256455bcde48f56a5/80a87a9529a55f8d3fb9b814f0158dc91686704222e252b256455bcde48f56a5-json.log
...
如果您想在“已退出”的容器上进行垃圾收集,则可以详细了解here。
另一种方法是设置一个在您的节点上定期运行的cron作业,这样做:
$ docker system prune -a --force