普通容器的日志,采用nas更好还是日志分析平台直接收集更好
从日志的持久性保存、性能、分析便捷性进行综合分析的话,哪种方案更优,或者是否有结合的方案。
先从单个容器的角度看日志的持久化存储:
以Containerd容器运行时为例,容器日志会保存至/var/log/pods/$CONTAINER_NAME目录下,该目录默认保存在每个节点的本地盘上。
但是本地存储有很多问题:日志量大会占用大量本地盘空间、日志分散管理难度大、POD漂移后日志找回难等;因此常见的是指定一个外置NFS共享存储路径来挂载该目录。如果对性能有诉求,可以用全闪存的NFS存储或者SSD占比较多的混合闪存。
但解决容器日志的本地存储是第一步,要发挥日志的作用,还要建立日志分析平台。
所以接下来从K8S集群角度看日志存储和分析:
常见的是部署一套日志收集-存储-分析平台,如ELK/EFK平台
其中的L(Logstash)或F(Fluentd)作为logging agent会作为DaemonSet运行在每个节点上用于抽取日志并写入Elastic Search节点;日志会在ES节点上再次持久化,再使用Kibana做分析
ES节点下的存储建议基于混合闪存的NAS:
1. 为什么推荐外置存储: