The PVC Remains In Pending State While Deploying Fission Using Helm Chart

Problem

  • The following error can be seen when PVC resources are described using kubectl.

Normal FailedBinding 3m50s (x12346 over 2d3h) persistentvolume-controller no persistent volumes available for this claim and no storage class is set
  • Once create the PVC can not be modified for the storageClassName as it is immutable.

Environment

  • Platform9 Managed Kubernetes - All Versions

  • Persistent Volumes

  • Helm Charts

Cause

StorageClass was not defined to bind it to the desired Persistent Volume.

Resolution

  1. A StorageClass is required for binding the PVCs to the existing PVs.

  2. The storageClass value needs to be defined in the values.yaml file in the HelmChart for Fission.

## If defined, storageClassName: [storageClass] ## If set to "-", storageClassName: "", which disables dynamic provisioning ## If undefined (the default) or set to null, no storageClassName spec is ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS & OpenStack) # storageClass: "-"
  1. Helm Chart uses Go Templates and the storageClassName in pvc.yaml file is populated from the values.yaml file.

{{- if (eq "-" .Values.persistence.storageClass) }} storageClassName: "" {{- else }} storageClassName: {{ .Values.persistence.storageClass | quote }}