使用 Docker/Kubernetes 容器挂载 NFS 服务器,而无需在服务器上使用不安全模式

使用 Docker/Kubernetes 容器挂载 NFS 服务器,而无需在服务器上使用不安全模式

我正在尝试容器化一个 Web 应用程序。作为其操作的一部分,它需要访问位于不同硬件上的四个单独的 NFS 挂载。其中两个挂载位于常规 Linux 机器上,但另外两个挂载位于单独的专有 NAS 设备上。

问题在于,Docker(以及扩展的 Kubernetes)使用内部 NAT 地址允许容器与外界通信,这导致传出挂载请求的源端口号高于 1024 的特权范围。默认情况下,NFS 服务器将阻止非特权挂载请求,除非您insecure在特定导出上设置该选项。

对于 Linux NFS 导出来说,这很容易。我添加了选项,挂载就可以正常工作了。

NAS 设备没有这个选项,并且将数据移动到其他地方是不可行的。

我想到的第一个解决方法是通过第三台服务器代理 NFS 请求,该服务器仅在本地挂载文件夹,然后使用不安全位设置重新导出它们。我担心这样做的可用性和性能。

理想情况下,我可以在 Docker 或 Kubernetes pod 清单中设置一些配置选项,强制对特定端口的传出请求来自特定端口。

考虑到 NFS 的普遍性,我也无法想象在大多数环境中这个问题尚未得到解决。

解决这个问题最合理的选择是什么?

相关内容