我们在 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 服务器,而不是向世界开放它。