我正在尝试容器化一个 Web 应用程序。作为其操作的一部分,它需要访问位于不同硬件上的四个单独的 NFS 挂载。其中两个挂载位于常规 Linux 机器上,但另外两个挂载位于单独的专有 NAS 设备上。
问题在于,Docker(以及扩展的 Kubernetes)使用内部 NAT 地址允许容器与外界通信,这导致传出挂载请求的源端口号高于 1024 的特权范围。默认情况下,NFS 服务器将阻止非特权挂载请求,除非您insecure
在特定导出上设置该选项。
对于 Linux NFS 导出来说,这很容易。我添加了选项,挂载就可以正常工作了。
NAS 设备没有这个选项,并且将数据移动到其他地方是不可行的。
我想到的第一个解决方法是通过第三台服务器代理 NFS 请求,该服务器仅在本地挂载文件夹,然后使用不安全位设置重新导出它们。我担心这样做的可用性和性能。
理想情况下,我可以在 Docker 或 Kubernetes pod 清单中设置一些配置选项,强制对特定端口的传出请求来自特定端口。
考虑到 NFS 的普遍性,我也无法想象在大多数环境中这个问题尚未得到解决。
解决这个问题最合理的选择是什么?