我们在 GKE 中设置了两个不同的集群。一个集群正在运行一个 nfs 服务器,在该集群上我们有一个指向服务器的持久卷。然后将此 PV 挂载到在此集群上运行的 pod 上。第二个集群也有一个 PV 和一个应该挂载相同 nfs 卷的 pod。这是问题发生的地方。在我们指出服务器不能使用 nfs-server clusterIp 地址的地方。这是可以理解的,但我想知道如何最好地实现这一点。
设置基本上是这样的:
NFS 使用的持久卷和持久卷声明
api版本:v1 种类:持久卷 元数据: 名称:nfs-pv 规格: 容量: 存储:20Gi storageClassName:手动 访问模式: - 读写多 gcePersistentDisk: pdName:文件 fs类型:ext4 --- api版本:v1 种类:PersistentVolumeClaim 元数据: 名称:nfs-pvc 规格: storageClassName:手动 访问模式: - 读写多 资源: 要求: 存储:20Gi
NFS 服务器部署
apiVersion:扩展/v1beta1 种类:部署 元数据: 名称:nfs服务器 规格: 复制品:1 选择器: 匹配标签: 角色:nfs服务器 模板: 元数据: 标签: 角色:nfs服务器 规格: 容器: - 名称:nfs 服务器 图片:gcr.io/google_containers/volume-nfs:0.8 端口: - 名称:nfs 容器端口:2049 - 名称:mountd 容器端口:20048 - 名称:rpcbind 容器端口:111 安全上下文: 特权:真 卷装: - 安装路径:/exports 名称:mypvc 卷: - 名称:mypvc 持久卷声明: 声明名称:nfs-pvc
NFS 服务器服务
api版本:v1 种类:服务 元数据: 名称:nfs服务器 规格: 端口: - 名称:nfs 端口:2049 - 名称:mountd 端口:20048 - 名称:rpcbind 端口:111 选择器: 角色:nfs服务器
Pod 使用的持久卷和持久卷声明:
api版本:v1 种类:持久卷 元数据: 名称:nfs 规格: 容量: 存储:20Gi storageClassName:手动 访问模式: - 读写多 nfs: 服务器:10.4.0.20 小路: ”/” --- 种类:PersistentVolumeClaim api版本:v1 元数据: 名称:nfs 规格: storageClassName:手动 访问模式: - 读写多 资源: 要求: 存储:20Gi
用于挂载 nfs 的 pod 部署文件的一部分
卷: - 名称:文件 持久卷声明: 声明名称:nfs
kubectl get pv 和 kubectl get pvc 的输出
user@HP-EliteBook:~/Downloads$ kubectl get pv 名称 容量 访问模式 回收政策 状态 索赔 存储类别 原因 年龄 nfs 100Gi RWX 保留绑定默认/nfs 手册 286d nfs-pv 100Gi RWO 保留绑定默认值/nfs-pvc 手册 286d user@HP-EliteBook:~/Downloads$ kubectl get pvc 名称 状态 容量 访问模式 存储类别 年龄 nfs 绑定 nfs 100Gi RWX 手册 286d nfs-pvc 绑定 nfs-pv 100Gi RWO 手册 286d
Pod 使用的 PV 中的 ip 是问题所在。同一集群上的 pod 可以连接到它,但不能连接到另一个集群上的 pod。我可以使用来自其他集群的实际 podIP,但 podIP 会随着每次部署而变化,因此这不是一个可行的解决方案。解决这个问题的最佳方法是什么,我只希望第二个集群能够访问 nfs 服务器,而不是向世界开放它。