title: How to fix 'pod has unbound immediate PersistentVolumeClaims' in SQL 2019 Big Data?
body: <p>I want to set up simple persistent storage on Kubernetes for SQL 2019 Big Data on prem. But keeps throwing an event 'pod has unbound immediate PersistentVolumeClaims'.</p>
  
  <p>When I deploy the image, pod mssql-controller shows an event:</p>
  
  <pre><code>Name:               mssql-controller-6vd8b
  Namespace:          sql2019
  Priority:           0
  PriorityClassName:  &lt;none&gt;
  Node:               &lt;none&gt;
  Labels:             MSSQL_CLUSTER=sql2019
                      app=mssql-controller
  Annotations:        &lt;none&gt;
  Status:             Pending
  IP:
  Controlled By:      ReplicaSet/mssql-controller
  Containers:
    mssql-controller:
      Image:      private-repo.microsoft.com/mssql-private-preview/mssql-controller:latest
      Port:       8081/TCP
      Host Port:  0/TCP
      Environment:
        ACCEPT_EULA:                  Y
        CONTROLLER_ENABLE_TDS_PROXY:  false
        KUBERNETES_NAMESPACE:         sql2019 (v1:metadata.namespace)
      Mounts:
        /root/secrets/controller-db from controller-db-secret (ro)
        /root/secrets/controller-login from controller-login-secret (ro)
        /root/secrets/knox from controller-knox-secret (ro)
        /root/secrets/node-admin-login from node-admin-login-secret (ro)
        /var/opt from controller-storage (rw)
        /var/opt/controller/config from controller-config-volume (rw)
        /var/run/secrets/kubernetes.io/serviceaccount from sa-mssql-controller-token-4fsbc (ro)
    mssql-portal:
      Image:        private-repo.microsoft.com/mssql-private-preview/mssql-portal:latest
      Port:         6001/TCP
      Host Port:    0/TCP
      Environment:  &lt;none&gt;
      Mounts:
        /var/opt from controller-storage (rw)
        /var/run/secrets/kubernetes.io/serviceaccount from sa-mssql-controller-token-4fsbc (ro)
    mssql-server-controller:
      Image:      private-repo.microsoft.com/mssql-private-preview/mssql-server-controller:latest
      Port:       1433/TCP
      Host Port:  0/TCP
      Environment:
        ACCEPT_EULA:  Y
        SA_PASSWORD:  &lt;password removed&gt;
      Mounts:
        /var/opt from controller-storage (rw)
        /var/run/secrets/kubernetes.io/serviceaccount from sa-mssql-controller-token-4fsbc (ro)
    mssql-monitor-fluentbit:
      Image:      private-repo.microsoft.com/mssql-private-preview/mssql-monitor-fluentbit:latest
      Port:       2020/TCP
      Host Port:  0/TCP
      Limits:
        memory:  100Mi
      Requests:
        cpu:     100m
        memory:  100Mi
      Environment:
        FLUENT_ELASTICSEARCH_HOST:  service-monitor-elasticsearch
        FLUENT_ELASTICSEARCH_PORT:  9200
        FLUENTBIT_CONFIG:           fluentbit-controller.conf
        KUBERNETES_NAMESPACE:       sql2019 (v1:metadata.namespace)
        KUBERNETES_NODE_NAME:        (v1:spec.nodeName)
        KUBERNETES_POD_NAME:        mssql-controller-6vd8b (v1:metadata.name)
      Mounts:
        /var/opt from controller-storage (rw)
        /var/run/secrets/kubernetes.io/serviceaccount from sa-mssql-controller-token-4fsbc (ro)
  Conditions:
    Type           Status
    PodScheduled   False
  Volumes:
    controller-storage:
      Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
      ClaimName:  mssql-controller-pvc
      ReadOnly:   false
    controller-login-secret:
      Type:        Secret (a volume populated by a Secret)
      SecretName:  controller-login-secret
      Optional:    false
    controller-db-secret:
      Type:        Secret (a volume populated by a Secret)
      SecretName:  controller-db-secret
      Optional:    false
    controller-knox-secret:
      Type:        Secret (a volume populated by a Secret)
      SecretName:  controller-knox-secret
      Optional:    false
    node-admin-login-secret:
      Type:        Secret (a volume populated by a Secret)
      SecretName:  node-admin-login-secret
      Optional:    false
    controller-config-volume:
      Type:      ConfigMap (a volume populated by a ConfigMap)
      Name:      mssql-controller-config
      Optional:  false
    sa-mssql-controller-token-4fsbc:
      Type:        Secret (a volume populated by a Secret)
      SecretName:  sa-mssql-controller-token-4fsbc
      Optional:    false
  QoS Class:       Burstable
  Node-Selectors:  &lt;none&gt;
  Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                   node.kubernetes.io/unreachable:NoExecute for 300s
  Events:
    Type     Reason            Age              From               Message
    ----     ------            ----             ----               -------
    Warning  FailedScheduling  1s (x6 over 4s)  default-scheduler  pod has unbound immediate PersistentVolumeClaims
  </code></pre>
  
  <p>Cluster config:</p>
  
  <pre><code>export USE_PERSISTENT_VOLUME=true
  export STORAGE_CLASS_NAME=slow
  </code></pre>
  
  <p>StorageClass.yaml</p>
  
  <pre><code>kind: StorageClass
  apiVersion: storage.k8s.io/v1
  metadata:
    name: slow
    annotations:
      storageclass.kubernetes.io/is-default-class: "true"
  provisioner: kubernetes.io/gce-pd
  parameters:
    type: pd-standard
    replication-type: none
  </code></pre>
  
  <p>I'm quite new to Kubernetes, but these are the things I know:</p>
  
  <ul>
  <li>I need Dynamic Volume Provisioning</li>
  <li>I need to create Storage Class (SQL 2019 creates Persistent Volume and Persistent Volume Claim)</li>
  </ul>