如果有专门的日志系统,那么通过sidecar或者daemonset pod来吐到日志系统将是显而易见的方案。
如果容器平台提供了ELK/EFK,那么应用方和平台方经过协商,应用日志吐到指定路径,再由平台方采集也是比价好的方案。可能的缺点会出在平台方提供的日志查询能力能否满足应用方的需求。但如果只是日志保存,那么该方案足矣。
最后作为下策可以选择挂卷来存储,对于deployment来说考虑文件存储,对于statefulset额外可以考虑块存储。
收起容器应用日志管理:
1、采用ELK/EFK应用架构,核心组件由Elasticsearch、Logstash/Filebeat、Kibana三部分组成。支持应用和服务视角的日志查看、搜索、告警。
2、支持采集容器标准输出和容器内部日志文件。
3、支持多集群日志统一采集及管理。
容器日志持久化保存采取方案:
1、挂载目录 bind, 创建一个目录,将目录挂载到 容器中产生日志的目录。
2、使用数据卷 volume, 创建数据卷,创建容器时绑定数据卷。
3、计算容器 rootfs 挂载点,使用挂载宿主机目录的方式采集日志对应用会有一定的侵入性,因为它要求容器启动的时候包含挂载命令。
4、在代码层中实现直接将日志写入redis。