生产上如果对k8s服务日志没有那么看重,或者小集群没有必要使用EFK这类方式收集日志,可以直接将日志存到宿主主机目录下,通过配置Pod的YAML文件,将宿主机上的目录挂载到Pod中,使Pod中的日志直接写入到宿主机的目录中,从而实现日志的本地保存。这种方法通常使用HostPath或PersistentVolume(PV)和PersistentVolumeClaim(PVC)来实现。
Volume挂载方案
如果使用Volume挂载方案将日志写入宿主机目录,那么即使Pod被删除,宿主机上的日志文件仍然保留。这种方式的好处是简单直接,但需要注意宿主机磁盘空间的管理。
注意事项
- 安全性:当使用HostPath或挂载宿主机目录时,需要注意安全问题,确保Pod中的应用程序不会意外地访问或修改宿主机上的敏感文件。
- 数据备份:对于重要的日志数据,建议定期备份以防数据丢失。
- 资源使用:使用日志收集器或挂载大量日志到宿主机时,需要考虑对集群资源(如CPU、内存、磁盘空间)的影响。
不管使用hostPath存储还是使用pv、pvc存储都需要修改dockerfile文件
Dockerfile
需要修改dockerfile文件 ,让输出的日志保存到容器的某个目录下,然后将这个容器的目录挂载到node的目录下,输出日志文件名为了容易查找设置为pod名称
hostPath方式
也是我生产上使用的方法
deployment的配置文件部分
这样日志就保存到对应启动的node主机的目录上了
PVC方式
nfs-pvc
storageclasses
deployment的配置文件部分
这样日志就保存到对应的PV里面了