我们在GKE中设置了两个不同的群集。一个群集正在运行nfs服务器,在该群集上,我们有一个指向该服务器的持久卷。然后将此PV安装在此集群上运行的Pod上。第二个集群还具有PV和应该安装相同nfs卷的容器。这是发生问题的地方。在我们指出服务器的地方,它不能与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
豆荚使用的持久量和持久量声明:
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的部署文件的一部分
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
豆荚使用的PV中的IP是问题。同一群集上的Pod可以连接到它,但另一个群集上的Pod无法连接。我可以使用其他群集中的实际podIP,但是podIP随每次部署而变化,因此这不是可行的解决方案。解决此问题的最佳方法是什么,我只希望第二个集群可以访问nfs服务器,而不希望向世界开放它。