<p>Can I use the same storage class for different services - e.g. I am using persistent volumes for Redis, RabbitMQ , Elastic Search on Kubernetes. </p>

<p>Should I create only only storage class if they all require the same provisioner (GCEPersistentDisk) or what is the best practice for creating and managing storage class. </p>

<p>Can I change the storage class of a claim at a later time ?</p>

<p>Thanks, 
Rajesh</p>

<p>Let's look at the definition of <code>StorageClass</code> from the documentation:</p>

<p><code>kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
mountOptions:
  - debug</code></p>

<p>So at a basic level, it defines - who is responsible for creating storage (<code>provisioner</code>) and what parameters need to pass and things such as reclaim policy and so on.</p>

<p>So the number of storage classes you need is dependent characteristics of the underlying storage. As a hypothetical example let's say you had HD and SSD as two types of storages then you would create corresponding two storage classes. </p>

<p>To answer specific questions:</p>

<blockquote>
  <p>Can I use the same storage class for different services - e.g. I am
  using persistent volumes for Redis, RabbitMQ , Elastic Search on
  Kubernetes.</p>
</blockquote>

<p>Yes</p>

<blockquote>
  <p>Can I change the storage class of a claim at a later time ?</p>
</blockquote>

<p>In practice, No</p>
