用普通文件在 k8s pods 中做一个 logrotate 是好还是会发生一些问题?

Is it good or if there is some trouble will happen do a logrotate inside k8s pods with common file?

使用 Kubernetes 在多个 pods 中部署 nginx。每个 pod 都将 access.log 文件挂载到 hostPath,以便 Filebeat 读取以收集到其他输出。

如果在每个 pod 中在相同的 cron 时间进行日志轮换,它们使用的是公共 access.log 文件,它会起作用。

我在一个简单的集群中用少量数据进行了测试。如果生产中出现大数据,这是一个好的方案还是logrotate的设计会出现问题?

这通常不会很好地工作,因为 logrotate 看不到其他 nginx 进程来 sighup 它们。如果特别是 nginx 可以在没有 hup 或其他外部 poke 的情况下检测到旋转,那么也许,但大多数软件不能。

一般情况下,容器日志应该转到 stdout 或 stderr 并由您的容器层处理,容器层通常会自行处理轮换或在系统级别包括 logrotate。