吊舱日志的K8s限制



当我试图从我的pod中检索日志时,我注意到K8s并没有打印所有的日志,我知道这一点,因为我观察到关于微服务初始化的日志不在日志的头部。

考虑到我的pod在很长的观察期内打印了很多日志,有人知道K8s是否有显示所有日志的限制吗?

我还尝试在kubectl logs命令中设置--since参数,以获取特定时间范围内的所有日志,但似乎没有效果。

谢谢。

容器运行时引擎通常管理容器(pod(日志。请检查正在使用的运行时引擎上的设置。

有一些答案,我将添加更多细节和来源。

答案很简短。没有限制,只有自由空间。默认情况下,kubernetes不负责日志轮换:

节点级日志记录中的一个重要考虑因素是实现日志轮换,这样日志就不会占用节点。Kubernetes不负责旋转日志,而是部署工具应该设置一个解决方案来解决这个问题。例如在由kube-up.sh脚本部署的Kubernetes集群中logrotate工具配置为每小时运行一次。您还可以设置容器运行时自动旋转应用程序的日志。

正如William所说,Kubernetes本身不提供自己的日志聚合,默认情况下它依赖于容器运行时。

当在Kubernetes上运行的容器将其日志写入stdout或stderr流,它们由运行在该节点,并被委派给容器引擎进行处理基于Kubernetes中配置的日志驱动程序。

在大多数情况下,Docker容器日志最终会出现在主机上的/var/log/containers目录。Docker支持多个日志记录驱动程序,但不幸的是,Kubernetes API不支持驱动程序配置。

一旦容器终止或重新启动,kubelet就会将其日志保存在节点。为了防止这些文件占用主机的所有存储,应该在节点上设置日志旋转机制。

Kubernetes不提供内置的日志轮换,但许多工具都提供了该功能,例如Docker的log-opt,或者标准文件托运人,甚至是一个简单的自定义cron作业。当容器被逐出节点,其相应的日志文件也被逐出

这意味着您可以尝试在/var/log/containersvar/log/pods中查找完整日志。这部分来自官方文件,更准确地说:

默认情况下,如果容器重新启动,kubelet会保留一个终止的容器容器及其日志。如果pod被逐出节点,则所有相应的容器连同它们的日志也被逐出。

要使日志具有良好的可见性和可访问性,您可以考虑为日志存储提供专用解决方案。例如,节点日志代理或流式传输到sidecar

请查找带有概念和示例的文章和官方kubernetes文档:

  • Kubernetes日志记录架构
  • kubernetes实用指南

前面的日志记录似乎有问题。附加相同的链接。https://github.com/kubernetes/kubernetes/pull/78071

相关内容

  • 没有找到相关文章

最新更新