开发者社区 > 云原生 > 容器服务 > 正文

问一下,容器服务ACK里面标准输出的日志,是存在容器和宿主的哪个位置的?

问题1:问一下,容器服务ACK里面标准输出的日志,是存在容器和宿主的哪个位置的?
问题2:没保存的话,kubectl logs 从哪里拿的日志呀?我现在在想,如果容器日志一直在标准输出,会不会把宿主机空间占满

展开
收起
真的很搞笑 2023-07-22 12:40:34 187 0
3 条回答
写回答
取消 提交回答
  • 在容器服务ACK中,容器的标准输出日志通常被重定向到容器实例所在宿主机上的某个位置。具体位置取决于您在创建容器时如何配置日志驱动程序。

    1. 默认情况下,ACK会使用Docker的json-file日志驱动程序。在这种情况下,容器的标准输出日志被写入到宿主机的/var/lib/docker/containers/<container_id>/<container_id>-json.log 文件中。其中 <container_id> 是您容器的唯一标识符。

    2. 如果您使用了其他的日志驱动程序(如syslogjournald等),则日志文件的位置和格式可能会有所不同。您可以根据您选择的日志驱动程序的文档来确定日志文件的位置。

    需要注意的是,以上提到的日志位置是容器实例所在宿主机上的位置,而不是直接位于ACK控制台或其他管理界面上。要访问并查看容器的标准输出日志,您可以通过SSH登录到宿主机,然后导航到相应的位置来查看日志文件。另外,您也可以使用日志收集工具(如ELK、EFK等)将容器的日志统一收集、分析和可视化。

    2023-07-28 10:06:22
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    CK里面标准输出的Pod日志默认只存在于集群节点宿主机上。

    Pod日志分为以下几种:

    标准输出(Stdout):容器写到 stdout 的日志
    标准错误(Stderr):容器写到 stderr 的日志
    文件日志:容器内指定文件产生的日志
    其中:

    标准输出和标准错误的日志,默认是保存于集群节点的/var/log/containers目录下。文件名由Pod名称和容器名称组成。

    文件日志,默认保存在容器内指定的文件中,不会保存到宿主机。

    所以,总的来说:

    标准输出和标准错误的Pod日志,默认只保存在集群节点的本地磁盘上,而不会保存到容器内。

    这是因为ACK采用的清理模式为:

    Always:每次容器退出后,都会清理其日志和缓存数据
    这样可以更好控制容器规模,但代价是Pod日志仅保留在节点本地。

    如果想要更好管理Pod日志,可以采用以下方式:

    配置 painful 模式,让Pod日志持久保留在节点
    输出日志到外部系统如 ELK 或日志服务
    部署日志 sidecar 收集Pod日志

    2023-07-23 17:26:07
    赞同 展开评论 打赏
  • 2023-07-22 12:50:54
    赞同 展开评论 打赏

国内唯一 Forrester 公共云容器平台领导者象限。

相关产品

  • 容器服务Kubernetes版
  • 相关电子书

    更多
    ACK 云原生弹性方案—云原生时代的加速器 立即下载
    ACK集群类型选择最佳实践 立即下载
    企业运维之云原生和Kubernetes 实战 立即下载

    相关镜像