问题1:问一下,容器服务ACK里面标准输出的日志,是存在容器和宿主的哪个位置的?
问题2:没保存的话,kubectl logs 从哪里拿的日志呀?我现在在想,如果容器日志一直在标准输出,会不会把宿主机空间占满
在容器服务ACK中,容器的标准输出日志通常被重定向到容器实例所在宿主机上的某个位置。具体位置取决于您在创建容器时如何配置日志驱动程序。
默认情况下,ACK会使用Docker的json-file
日志驱动程序。在这种情况下,容器的标准输出日志被写入到宿主机的/var/lib/docker/containers/<container_id>/<container_id>-json.log
文件中。其中 <container_id>
是您容器的唯一标识符。
如果您使用了其他的日志驱动程序(如syslog
、journald
等),则日志文件的位置和格式可能会有所不同。您可以根据您选择的日志驱动程序的文档来确定日志文件的位置。
需要注意的是,以上提到的日志位置是容器实例所在宿主机上的位置,而不是直接位于ACK控制台或其他管理界面上。要访问并查看容器的标准输出日志,您可以通过SSH登录到宿主机,然后导航到相应的位置来查看日志文件。另外,您也可以使用日志收集工具(如ELK、EFK等)将容器的日志统一收集、分析和可视化。
CK里面标准输出的Pod日志默认只存在于集群节点宿主机上。
Pod日志分为以下几种:
标准输出(Stdout):容器写到 stdout 的日志
标准错误(Stderr):容器写到 stderr 的日志
文件日志:容器内指定文件产生的日志
其中:
标准输出和标准错误的日志,默认是保存于集群节点的/var/log/containers目录下。文件名由Pod名称和容器名称组成。
文件日志,默认保存在容器内指定的文件中,不会保存到宿主机。
所以,总的来说:
标准输出和标准错误的Pod日志,默认只保存在集群节点的本地磁盘上,而不会保存到容器内。
这是因为ACK采用的清理模式为:
Always:每次容器退出后,都会清理其日志和缓存数据
这样可以更好控制容器规模,但代价是Pod日志仅保留在节点本地。
如果想要更好管理Pod日志,可以采用以下方式:
配置 painful 模式,让Pod日志持久保留在节点
输出日志到外部系统如 ELK 或日志服务
部署日志 sidecar 收集Pod日志
回答1:默认不会保存,需要用 kubectl logs {pod名称} 查看
回答2:https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/logging/,此回答整理自钉群“阿里云容器服务ACK用户大群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。