配置CIFS FlexVolume时Pod挂载节点错误目录问题求助
Kubernetes SMB FlexVolume Pod挂载异常指向Docker临时目录的解决方案
我之前碰到过类似的情况,结合你的环境配置和问题现象,这个问题的核心是旧版Docker与Kubernetes v1.14.0的FlexVolume挂载机制不兼容。
环境关键点确认
你的配置里有个容易忽略的关键细节:
- Kubernetes版本是v1.14.0(较新的稳定版本)
- Docker版本却是1.13.1(相当老旧的版本)
- 其他依赖(cifs-utils、FlexVolume驱动路径与权限)、SMB节点挂载都配置正常
问题现象拆解
节点上SMB共享能正常挂载到/var/lib/kubelet/pods/<pod-id>/volumes/microsoft.com~smb,说明FlexVolume驱动本身是正常工作的;但Pod内部的/data挂载点指向Docker的临时containerd目录,这是因为旧版Docker在处理Kubernetes Volume的命名空间传递时存在缺陷,导致Pod无法正确关联节点上的挂载点,最终 fallback到了临时tmpfs目录。
解决办法
直接升级Docker到验证过的稳定版本18.06,升级完成后重新部署Pod,就能看到/data目录正确映射到SMB共享了。
为什么GlusterFS/Heketi驱动的Pod正常?
不同存储驱动的实现逻辑存在差异,GlusterFS这类驱动的挂载机制在旧版Docker下兼容性更好,但SMB FlexVolume的实现对Docker版本的兼容性要求更高,尤其是与Kubernetes 1.14+版本的配合。
内容的提问来源于stack exchange,提问作者GedNX
相关产品推荐
相关产品推荐

