<p>I created a simple local storage volume. Something like this:</p>

<pre><code>apiVersion: v1
kind: PersistentVolume
metadata:
  name: vol1
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /srv/volumes/vol1
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - my-node
</code></pre>

<p>The I create a claim:</p>

<pre><code>kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage:1Gi
</code></pre>

<p>For unknow reason they don't get matches. What am I doing wrong?</p>

<p>About local storage it is worth to note that:</p>

<blockquote>
  <p>Using local storage ties your application to that specific node,
  making your application harder to schedule. If that node or local
  volume encounters a failure and becomes inaccessible, then that pod
  also becomes inaccessible. In addition, many cloud providers do not
  provide extensive data durability guarantees for local storage, so you
  could lose all your data in certain scenarios.</p>
</blockquote>

<p>This is for Kubernetes <a href="https://kubernetes.io/blog/2018/04/13/local-persistent-volumes-beta/" rel="nofollow noreferrer">1.10</a>. In Kubernetes <a href="https://kubernetes.io/blog/2019/04/04/kubernetes-1.14-local-persistent-volumes-ga/" rel="nofollow noreferrer">1.14</a> local persistent volumes became GA. </p>

<p>You posted an answer that user is required. Just to clarify the user you meant is a consumer like a pod, deployment, statefullset etc. 
So using just a simple pod definition would make your PV to become bound:</p>

<pre><code>kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: myclaim
</code></pre>

<p>Now the problem happens when you would delete the pod and try to run another one. In this case if you or someone else wold look for a solution it has been described in this <a href="https://www.google.com/url?q=https://github.com/kubernetes/kubernetes/issues/48609%23issuecomment-314066616&amp;sa=D&amp;source=hangouts&amp;ust=1556362801325000&amp;usg=AFQjCNEpCZR29ayWUmDt7-x0e5ZuGnG82A" rel="nofollow noreferrer">GitHub issue</a>. </p>

<p>Hope this clears things out. </p>
