Minio server pod gets stuck in Pending STATUS

When Minio is deployed in distributed mode with dynamic storage allocation, the server pod might get stuck with status as Pending.

Gather information about the issue

  1. Get the list of pods.

    kubectl get po
    

    The following code is a sample output:

    NAME                                  READY     STATUS    RESTARTS   AGE
    mc2                                   1/1       Running   54         2d
    minio-ibm-minio-objectstore-0         0/1       Pending   0          7s
    
  2. Get pod description.

    kubectl describe po minio-ibm-minio-objectstore-0
    

    The following code is a sample output:

    Name:               minio-ibm-minio-objectstore-0
    Namespace:          default
    Priority:           0
    PriorityClassName:  <none>
    Node:               <none>
    Labels:             app=ibm-minio-objectstore
                       chart=ibm-minio-objectstore-1.6.0
                       controller-revision-hash=minio-ibm-minio-objectstore-7b77fd5658
                       heritage=Tiller
                       release=minio
                       statefulset.kubernetes.io/pod-name=minio-ibm-minio-objectstore-0
    
    ...
    
    Volumes:
     export:
       Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
       ClaimName:  export-minio-ibm-minio-objectstore-0
       ReadOnly:   false
    ...
    
    Events:
     Type     Reason            Age                 From               Message
     ----     ------            ----                ----               -------
     Warning  FailedScheduling  14s (x25 over 57s)  default-scheduler  pod has unbound PersistentVolumeClaims (repeated 5 times)
    

    The output indicates that the PVCs are unbound.

  3. Describe the PVC.

    kubectl describe pvc export-minio-ibm-minio-objectstore-0
    

    The following code is a sample output:

    Name:          export-minio-ibm-minio-objectstore-0
    Namespace:     default
    StorageClass:  standard
    Status:        Pending
    Volume:
    Labels:        app=ibm-minio-objectstore
                  release=minio
    Annotations:   <none>
    Finalizers:    [kubernetes.io/pvc-protection]
    Capacity:
    Access Modes:
    Events:
     Type     Reason              Age               From                         Message
     ----     ------              ----              ----                         -------
     Warning  ProvisioningFailed  8s (x19 over 4m)  persistentvolume-controller  storageclass.storage.k8s.io "standard" not found
    

    The output indicates that the persistence volume is trying to bind through the storage class named standard. Check whether the storage class exists in your cluster.

    kubectl get sc standard
    

    The following code is a sample output:

    No resources found.
    Error from server (NotFound): storageclasses.storage.k8s.io "standard" not found
    

    The output indicates that the storage class does not exist.

Resolve the issue

To resolve the issue, complete the following steps:

  1. Install a suitable block storage, such as GlusterFS or Ceph, in your cluster.
  2. Ensure that the block storage has a storage class.
  3. Add the storage class in the Helm chart configuration.
  4. Deploy the Helm chart.