我有两个pod,它们使用相同的pvc来挂载pv,这样它们就可以通过挂载的目录共享文件。Pod A有一个Java应用程序,它监视挂载目录中的新文件(使用Java.nio.file.WatchService(,但如果Pod B创建/renames/moves/等。一个文件,它显示在卷上和pod a中,但不会触发相应的事件。当我重命名pod A中的文件或对其进行任何操作时,它会被直接识别。存储系统是本地kubernetes集群上的gluster fs。
这种行为的原因是Java WatchService无法确保在通过绑定装载使用卷时正确生成文件事件。
这篇文章深入探讨了为什么会出现这种情况:https://blog.arkey.fr/2019/09/13/watchservice-and-bind-mount/
这个问题最简单的解决方案是定期检查新文件。