在kubernetes集群之间共享nfs卷

时间:2018-06-26 15:09:09

标签: kubernetes nfs google-kubernetes-engine persistent-volumes

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

0 个答案:

没有答案