我尝试使用fluentd读取Windows k8s群集上的kubernetes pod日志文件(是的,Windows版本k8s群集)。
我发现,所有kubernetes pod日志都位于主机OS上的C:/var/log
文件夹下,因此我计划将此文件夹安装到fluentd容器中,以便fluentd可以读取它。
因为我发现C:/var/log
文件夹下的所有文件都是symlink文件,而真正的目标文件位于C:\ProgramData\docker
下,所以我将两个文件夹都安装到了pod中,因为我认为symlink文件需要定位文件。
但是我发现,fluentd可以读取已读文件(在C:\ProgramData\docker
下),但是无法通过C:/var/log
下的symlink文件读取。
所以我远程到Windows节点并尝试通过运行进行验证:
$ docker run --rm -v c:/var/log:c:/var/log -v c:/ProgramData/docker:c:/ProgramData/docker -it mcr.microsoft.com/powershell powershell
并得到以下结果:
PS C:\var\log\containers> type .\speller-col2-65679699c6-hjvhw_speller_speller-col2-ddd1788228d99678c04e85cc2438cb1646667ee0c751a9768b53da92df9f3103.log
type : The create operation failed because the name contained at least one mount point which resolves to a volume to which the specified device object is not attached.
At line:1 char:1
+ type .\speller-col2-65679699c6-hjvhw_speller_speller-col2-ddd1788228d ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (C:\var\log\cont...a92df9f3103.log:String) [Get-Content], IOException
+ FullyQualifiedErrorId : GetContentReaderIOError,Microsoft.PowerShell.Commands.GetContentCommand
我尝试读取真实的日志文件(那些symlink文件指向的文件),并且可以正确获取内容。但是,当我尝试通过符号链接文件进行读取时,它失败了。我相信这就是为什么流利的人也不能正常工作。
我尝试使用google,但没有找到任何线索。有没有人曾经尝试过相同的案例,或者有谁可以分享我可以尝试的想法?