<p>I have configured a kubernetes cluster on bare metal using kubeadm. Everything works well and I can deploy an example nginx app. Problem comes in when I want to deploy a statefulset with <code>volumeClaimTemplates</code> as shown below</p>

<pre><code>  volumeClaimTemplates:
  - metadata:
      name: jackrabbit-volume
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 2Gi
      storageClassName: jackrabbit
</code></pre>

<p>and the storageclass</p>

<pre><code>allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    meta.helm.sh/release-name: chart-1591185140
    meta.helm.sh/release-namespace: gluu
    storageclass.beta.kubernetes.io/is-default-class: "false"
  labels:
    app.kubernetes.io/managed-by: Helm
    storage: jackrabbit
  managedFields:
  - apiVersion: storage.k8s.io/v1
mountOptions:
- debug
parameters:
  fsType: ext4
  pool: default
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Retain
</code></pre>

<p>I have also tried to add a <code>persistentVolume</code> with <code>hostPath</code> spec but still not working.</p>

<pre><code> ----     ------              ----               ----                         -------
  Warning  ProvisioningFailed  82s (x3 over 98s)  persistentvolume-controller  no volume plugin matched
</code></pre>

<p>In your StorageClass you are using <code>kubernetes.io/no-provisioner</code> and this means you are trying to use Local Volume Plugin. </p>

<p>You cluster doesn't know <code>kubernetes.io/no-provisioner</code> yet and that's why <code>no volume plugin matched</code> is presented. </p>

<p>According to <a href="https://kubernetes.io/docs/concepts/storage/storage-classes" rel="nofollow noreferrer">documentation</a>,  this Plugin is not included in the <code>kubernetes.io</code> as an Internal Provisioner. <a href="https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner" rel="nofollow noreferrer">Here</a> you can see a chart listing all Provisioners, their Plugin Names, if they are included in the Internal Provisioner and a link to a config example. </p>

<p>In the documentation we can read:</p>

<blockquote>
  <p>You are not restricted to specifying the “internal” provisioners
  listed here (whose names are prefixed with <code>kubernetes.io</code> and shipped
  alongside Kubernetes). You can also run and specify external
  provisioners, which are independent programs that follow a 
  <a href="https://git.k8s.io/community/contributors/design-proposals/storage/volume-provisioning.md" rel="nofollow noreferrer">specification</a>
  defined by Kubernetes. Authors of external provisioners have full
  discretion over where their code lives, how the provisioner is
  shipped, how it needs to be run, what volume plugin it uses (including
  Flex), etc. The repository 
  <a href="https://github.com/kubernetes-sigs/sig-storage-lib-external-provisioner" rel="nofollow noreferrer">kubernetes-sigs/sig-storage-lib-external-provisioner</a>
  houses a library for writing external provisioners that implements the
  bulk of the specification. Some external provisioners are listed under
  the repository 
  <a href="https://github.com/kubernetes-incubator/external-storage" rel="nofollow noreferrer">kubernetes-incubator/external-storage</a>.</p>
  
  <p>For example, NFS doesn’t provide an internal provisioner, but an
  external provisioner can be used. There are also cases when 3rd party
  storage vendors provide their own external provisioner.</p>
</blockquote>

<p>The Local external provisioner is maiteined on <a href="https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner#getting-started" rel="nofollow noreferrer">this</a> GitHub repository and there you can find the <a href="https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner#getting-started" rel="nofollow noreferrer">Getting Started</a> guide that will lead you trough how to use it. </p>
