<p>I created a physical volume using NFS and PVC for the same volume. However, the PVC always creates a EBS disk storage instead of binding to the PV. Please see the log below:</p>

<pre><code>&gt; kubectl get pv
NAME      CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM     STORAGECLASS   REASON    AGE
mynfspv   100Gi      RWX           Retain          Available                                      7s
</code></pre>

<p>create PVC now</p>

<pre><code>&gt; kubectl get pvc
NAME       STATUS    VOLUME                                     CAPACITY   ACCESSMODES   STORAGECLASS   AGE
mynfspvc   Bound     pvc-a081c470-3f23-11e7-9d30-024e42ef6b60   100Gi      RWX           default        4s


&gt; kubectl get pv
NAME                                       CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM              STORAGECLASS   REASON    AGE
mynfspv                                    100Gi      RWX           Retain          Available                                               50s
pvc-a081c470-3f23-11e7-9d30-024e42ef6b60   100Gi      RWX           Delete          Bound       default/mynfspvc   default                  17s
</code></pre>

<p>nfs-pv.yaml</p>

<pre><code>apiVersion: v1
kind: PersistentVolume
metadata:
  name: mynfspv
  labels:
    name: nfs2
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: dbc56.efs.us-west-2.amazonaws.com
    path: /
</code></pre>

<p>nfs-pvc.yaml</p>

<pre><code>kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mynfspvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
</code></pre>

<p>It looks like you have dynamic provisioning and default storageclass feature enabled, and the default class is AWS ebs. You can check your default class with following command:</p>

<pre><code>$ kubectl get storageclasses
NAME                 TYPE
standard (default)   kubernetes.io/aws-ebs
</code></pre>

<p>If this is correct, then I think you'll need to specify storage class to solve you problem.</p>

<pre><code>kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: nfs-class
provisioner: kubernetes.io/fake-nfs
</code></pre>

<p>Add <code>storageClassName</code> to both of your PV</p>

<pre><code>kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mynfspvc
spec:
  storageClassName: nfs-class
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
</code></pre>

<p>and PVC</p>

<pre><code>apiVersion: v1
kind: PersistentVolume
metadata:
  name: mynfspv
  labels:
    name: nfs2
spec:
  storageClassName: nfs-class
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: dbc56.efs.us-west-2.amazonaws.com
    path: /
</code></pre>

<p>You can check out <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1</a> for details.</p>
