Error "no persistent volumes available for this claim and no storage class is set"

23,265

Solution 1

Back to your main question

Is it required to create the directory manually in nodes or will it be auto created by pv?

First of all, error in your output is not related with your question. As an answer for your question - Yes. It is crated by PV automatically.

In order to do achieve this, first you have to create StorageClass with no-provisioner as an example below

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: manual
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

Then you have to create PersistentVolume by defining this storageClassName and hostPath parameter like below:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: zk1-pv
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  hostPath:
    path: /mr/zk

Then you have to create PVC and Pod/Deployment as an example below:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

---
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: containerName
      image: gcr.io/google-containers/nginx:1.7.9
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: myclaim

NOTE:
Don't forget put storageClassName: manual parameter on both PVC and PV manifests. Otherwise they will not be able to bound to each other.

Hope it clears

Solution 2

You forgot to specify storageClassName: manual in PersistentVolumeClaim.

Share:
23,265
Pooja
Author by

Pooja

Updated on July 05, 2022

Comments

  • Pooja
    Pooja almost 2 years

    Is it required to create the directory manually in nodes or will it be auto created by pv?

    Here is my pv & pvc file, and I'm seeing this error

    no persistent volumes available for this claim and no storage class is set

    how to resolve this?

    kind: PersistentVolume
    apiVersion: v1
    metadata:
    name: zk1-pv
    labels:
      type: local
    spec:
    storageClassName: manual
    capacity:
      storage: 10Mi
    accessModes:
      - ReadWriteOnce
    hostPath:
      path: "/mr/zk"
    
    cat zk1-pvc.yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: zk1-pvc
    spec:
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 10Mi
    
    
    kubectl describe pvc zk1-pvc
    Name:          zk1-pvc
    Namespace:     instavote
    StorageClass:
    Status:        Pending
    Volume:
    Labels:        <none>
    Annotations:   kubectl.kubernetes.io/last-applied-configuration:
                   {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"zk1-pvc","namespace":"instavote"},"spec":{"accessMo...
    Finalizers:    [kubernetes.io/pvc-protection]
    Capacity:
    Access Modes:
    Events:
    Type       Reason         Age                  From                         Message
    ----       ------         ----                 ----                         -------
    Normal     FailedBinding  12s (x14 over 3m7s)  *persistentvolume-controller  no persistent volumes available for this claim and no storage class is set*
    Mounted By:  zk1-745b7cbf46-lg7v9