我们在GKE中设置了两个不同的集群 . 一个集群正在运行nfs-server,在该集群上,我们有一个指向服务器的持久卷 . 然后将此PV安装在此群集上运行的Pod上 . 第二个集群还有一个PV和一个应安装相同nfs卷的pod . 这是问题发生的地方 . 我们指出服务器使用nfs-server clusterIp地址时不起作用 . 这是可以理解的,但我想知道如何最好地实现这一目标 .
设置基本上是这样的:
NFS使用的持久卷和持久卷声明
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 20Gi
storageClassName: manual
accessModes:
- ReadWriteMany
gcePersistentDisk:
pdName: files
fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
NFS服务器部署
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nfs-server
spec:
replicas: 1
selector:
matchLabels:
role: nfs-server
template:
metadata:
labels:
role: nfs-server
spec:
containers:
- name: nfs-server
image: gcr.io/google_containers/volume-nfs:0.8
ports:
- name: nfs
containerPort: 2049
- name: mountd
containerPort: 20048
- name: rpcbind
containerPort: 111
securityContext:
privileged: true
volumeMounts:
- mountPath: /exports
name: mypvc
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: nfs-pvc
NFS服务器服务
apiVersion: v1
kind: Service
metadata:
name: nfs-server
spec:
ports:
- name: nfs
port: 2049
- name: mountd
port: 20048
- name: rpcbind
port: 111
selector:
role: nfs-server
pod使用的持久卷和持久卷声明:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
capacity:
storage: 20Gi
storageClassName: manual
accessModes:
- ReadWriteMany
nfs:
server: 10.4.0.20
path: "/"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nfs
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
用于挂载nfs的pod的部署文件的一部分
volumes:
- name: files
persistentVolumeClaim:
claimName: nfs
kubectl的输出得到pv和kubectl获得pvc
user@HP-EliteBook:~/Downloads$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
nfs 100Gi RWX Retain Bound default/nfs manual 286d
nfs-pv 100Gi RWO Retain Bound default/nfs-pvc manual 286d
user@HP-EliteBook:~/Downloads$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nfs Bound nfs 100Gi RWX manual 286d
nfs-pvc Bound nfs-pv 100Gi RWO manual 286d
pod中使用的PV中的ip是问题所在 . 同一群集上的Pod可以连接到它,但不能连接到另一个群集上的pod . 我可以使用来自其他群集的实际podIP,但podIP随每次部署而变化,因此这不是一个可行的解决方案 . 解决此问题的最佳方法是什么,我只希望第二个集群可以访问nfs服务器,而不是打开它到世界各地 .