从外部世界访问 GKE 中的共享目录

Posted

技术标签:

【中文标题】从外部世界访问 GKE 中的共享目录【英文标题】:Accessing a shared directory inside GKE from an external world 【发布时间】:2020-10-13 17:52:41 【问题描述】:

我是 Google Cloud 和 GKE 的新手,我正在尝试借助以下链接在 GKE 上使用 Kubernetes 设置 NFS 持久卷: https://medium.com/platformer-blog/nfs-persistent-volumes-with-kubernetes-a-case-study-ce1ed6e2c266

我已按照说明进行操作,并且能够达到博客中提到的预期结果,但我需要从外部世界访问共享文件夹(/上传),因此有人可以帮助我实现它或任何指针或实现相同目标的任何建议

【问题讨论】:

请查看此文档 (linuxtechi.com/configure-nfs-persistent-volume-kubernetes): nfs: path: /opt/k8s-pods/data server: 192.168.1.40 @Mahboob 这里的服务器 (192.168.1.40) 是一个外部 VM,不是 GKE 集群,而是一个单独的 VM,我们在其中手动设置 NFS,但 Google Cloud Registry 本身有一个现成的映像,但我的问题更多的是如何将挂载路径暴露给外界。 【参考方案1】:

我遵循doc 并像您一样在我的测试 GKE 集群上实施了这些步骤。只是我对当前用于部署的 API 版本有一个观察。我们需要使用 apiVersion:apps/v1 而不是 apiVersion:extensions/v1beta1。然后我用busybox pod测试挂载volume,测试成功。

然后我将服务“nfs-server”公开为服务类型“负载均衡器”,如下所示

并在“服务和入口”选项卡中找到了外部负载平衡器端点,例如 (LB_Public_Ip):111。我在防火墙中允许端口 111、2049、20048。之后,我在 GCP 项目中使用了一个基于 redhat 的 VM,并安装了“sudo dnf install nfs-utils -y”。然后您可以使用以下命令查看 nfs 导出列表。然后就可以按预期挂载了。

-sudo showmount -e LB_Public_IP

【讨论】:

我尝试了同样的方法,但是在我的 GCP 项目中,当我输入 showmount -e 时,我启动了一个 REDHAT 实例,它抛出了一个错误 clnt_create: RPC: Port mapper failure - Unable to receive: errno 111(连接被拒绝)。我可以使用本地虚拟机连接到 GKE pod 并从本地虚拟机运行命令 showmount -e 吗?对此的任何建议都会有帮助【参考方案2】:

请查看以下示例配置,您可以关注 GCP doc

【讨论】:

问题是文件存储实例的最低容量为 1 TB,一个月的成本为 200 美元,因此我正在寻找替代方案,因为我几乎无法在磁盘中存储 10 GB 的数据。

以上是关于从外部世界访问 GKE 中的共享目录的主要内容,如果未能解决你的问题,请参考以下文章

Terraform gcp 与共享 vpc、gke

如何在 Qt 中创建共享小部件的子目录?

NFS共享目录

NFS共享目录

NFS共享存储服务

如何从Win10连接到Linux Samba共享