我有一个记录到文件my_log / 1.log的应用程序,然后使用filebeat从文件中收集日志
现在,我使用k8s将其部署到某些节点中,并使用主机路径类型“卷”将my_log文件安装到本地文件系统/ home / my_log,突然发现一种微妙的情况:
如果在此计算机上部署多个pod,然后他们尝试同时写入日志,会发生什么情况?
我知道在正常情况下,多进程尝试同时写入文件,系统会锁定文件,因此这些进程可以一个接一个地写入,但是我不确定k8s的不同Pod是否会不能共享相同的锁空间,如果这样,将是一场灾难。 我尝试测试一下,看来不同的Pod仍然会共享文件锁,日志文件似乎很正常
答案 0 :(得分:0)
当涉及主机路径卷时,kubernetes如何处理跨多个Pod的文件写储物柜
不是。
操作系统和文件系统正在处理该问题。
以syslog
为例。它通过打开套接字,将套接字设置为服务器模式,以写模式打开日志文件,收到程序包通知,解析消息并最终将其写入文件来对其进行处理。
还可以缓存日志,并且该过程可以限制为1个线程,因此,不应有太多的Pod写入一个文件。这可能导致诸如丢失日志或削减行之类的问题。
您的应用程序应处理文件锁定以推送日志,如果您要让许多Pod编写日志,则每个Pod应该有一个单独的日志文件。