【问题标题】:Do logs get saved on Google Kubernetes日志会保存在 Google Kubernetes 上吗
【发布时间】:2018-11-03 17:00:59
【问题描述】:

我正在运行一个部署,其中包含三个容器,即应用程序、nginx 和云 sql 实例。我的基于 python 的应用程序中有很多打印语句。

每次用户与应用交互时,都会打印输出。我想知道这些日志是否默认保存在任何位置。

我担心这些日志可能会占用运行它的集群中节点上的空间。这会发生吗?还是默认情况下 Kubernetes 部署不保存任何日志?

【问题讨论】:

    标签: docker logging kubernetes google-cloud-platform


    【解决方案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
    

    【讨论】:

    • 但是,如果我的容器连续运行并且当用户与容器中的应用程序交互时正在创建日志怎么办。我如何确保定期清理,以便它不会填满节点并且我的 docker 应用程序挂起
    • 这是一个常见问题,您可以将日志直接发送到另一个设施,例如 ELK 堆栈。也许在您的 pod 上有一个边车:kubernetes.io/docs/concepts/cluster-administration/logging.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2021-01-10
    • 2018-11-16
    • 2020-01-09
    • 2021-01-17
    • 2020-08-13
    • 2014-10-11
    相关资源
    最近更新 更多