<ol>
<li>Is it possible define <code>storageClassName</code> in <code>PersistentVolume</code> although not exists corresponding <code>StorageClass</code> in the cluster? </li>
<li>Suppose that there are :
<code>StorageClass</code> with name = X, 
pre-defined <code>PersistentVolume</code> with <code>storageClassName</code> = X,
<code>PersistentVolumeClaim</code> with <code>storageClassName</code> = X. In this case the cluster will try bind the PVC to the existing PV and dynamic provisioning will happen only if the PV is not available?</li>
</ol>

Mortova
<p>From the <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes/#dynamic" rel="nofollow noreferrer">docs</a></p>

<blockquote>
  <p>When none of the static PVs the administrator created match a user’s
  PersistentVolumeClaim, the cluster may try to dynamically provision a
  volume specially for the PVC. This provisioning is based on
  StorageClasses: the PVC must request a storage class and the
  administrator must have created and configured that class for dynamic
  provisioning to occur.</p>
</blockquote>

<ol>
<li>PV can be created with a storage class which does not exist. You can then create a PVC which need to match with the <code>storageClassName</code> in the PV. There is no requirement for the storage class to exist in the cluster when the provisioning is not dynamic.</li>
<li>When None of the PV matches with PVC then dynamic provisioning happens. For the dynamic provisioning to be successful existence of the storage class in the cluster is needed as mentioned in the PVC in <code>storageClassName</code>.</li>
</ol>
