无法通过安装在Windows容器中的主机OS符号链接文件读取

时间:2018-11-15 10:09:10

标签: windows docker kubernetes symlink

我尝试使用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,但没有找到任何线索。有没有人曾经尝试过相同的案例,或者有谁可以分享我可以尝试的想法?

0 个答案:

没有答案