为啥成功执行 Cron 作业会停止将日志进一步附加到文件中
Posted
技术标签:
【中文标题】为啥成功执行 Cron 作业会停止将日志进一步附加到文件中【英文标题】:Why does Successful execution of Cron job stops further appending of log onto a file为什么成功执行 Cron 作业会停止将日志进一步附加到文件中 【发布时间】:2021-07-27 12:22:06 【问题描述】:我正在开发 Openshift 项目。我使用 yaml config 配置了一个 cron 作业。在我们的应用程序中,所有日志都附加到 Persistent Volume 内的文件中。一旦 cron 作业成功执行以清除文件,则不会附加更多日志。
我的观察:
-
最初我认为 PV 本身不是 Read-Write Many,因此我将其更改为 Read-Write Many 并且仍然观察到相同的行为。
cron 作业 yaml 中提到的图像存在一些图像问题。但我尝试了不同的图像,但仍然发现同样的问题。
谁能解释我并为以下问题找到一个合理的解决方案?
编辑:
是的,日志仅在打开文件时被配置为 APPEND。我知道 PV 的访问模式不能控制 IO 操作。
【问题讨论】:
【参考方案1】:首先您应该检查日志是如何记录在 PV 后端存储的文件中的。例如,当应用程序开始将消息记录到文件时,应以“APPEND”模式打开日志文件。 PV 访问模式,例如 ReadWriteMany 和 ReadWriteOnce 不控制应用程序透视图的 IO,它只考虑节点,而不考虑 Pod 和应用程序。详情请参考Access Modes。
ReadWriteOnce -- the volume can be mounted as read-write by a single node
ReadOnlyMany -- the volume can be mounted read-only by many nodes
ReadWriteMany -- the volume can be mounted as read-write by many nodes
换句话说,这意味着 k8s 不确保 pod 和应用程序上的文件处理。或者 IO 操作取决于后端存储或文件系统特性,例如 block(iscsi, ebs ...) 或文件单元 (nfs, glusterfs ...) IO。
【讨论】:
以上是关于为啥成功执行 Cron 作业会停止将日志进一步附加到文件中的主要内容,如果未能解决你的问题,请参考以下文章
如何取消或停止Google App Engine Cron作业