StorageClass configuration

For the Cassandra database, hybrid runtime uses dynamically created persistent volumes to store data. To configure Cassandra properly, you must configure a StorageClass definition that is backed by a solid-state drive (SSD).

This topic explains how to create a new StorageClass that uses SSD and make it the default class. When Cassandra starts, it will use this default StorageClass.

Change the default StorageClass

The following steps explain how to create a StorageClass and make it the default class. For more information, see Change the default storage class in the Kubernetes documentation.

  1. Get the name of the current default StorageClass:
    kubectl get sc

    For example:

    kubectl get sc
      NAME                  PROVISIONER            RECLAIMPOLICY
      VOLUMEBINDINGMODE     ALLOWVOLUMEEXPANSION   AGE
      premium-rwo           pd.csi.storage.gke.io  Delete
      WaitForFirstConsumer  true                   40m
      standard (default)    kubernetes.io/gce-pd   Delete
      Immediate             true                   40m
      standard-two          pd.csi.storage.gke.io  Delete
      WaitForFirstConsumer  true                   40m
    
  2. Describe the StorageClass named standard. Note that its type is pd-standard:
    kubectl describe sc standard

    For example:

    kubectl describe sc standard
      Name:                  standard
      IsDefaultClass:        Yes
      Annotations:           storageclass.beta.kubernetes.io/is-default-class=true
      Provisioner:           kubernetes.io/gce-pd
      Parameters:            type=pd-standard
      AllowVolumeExpansion:  <unset>
      MountOptions:          <none>
      ReclaimPolicy:         Delete
      VolumeBindingMode:     Immediate
      Events:                <none>
  3. Create a new file called storageclass.yaml.
  4. Add this code to the file. Note that the name of the new class is apigee-sc. You can use any name you like. Also, note that the storage type is pd-ssd:
    ---
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: "apigee-sc"
    provisioner: pd.csi.storage.gke.io
    parameters:
      type: pd-ssd
      replication-type: none
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    
  5. Apply the new StorageClass to your Kubernetes cluster:
    kubectl apply -f storageclass.yaml
  6. Execute the following two commands to change the default StorageClass:
    kubectl patch storageclass standard \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
    kubectl patch storageclass apigee-sc \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  7. Execute this command to verify that the new default StorageClass is called apigee-sc:
    kubectl get sc

    For example:

    kubectl get sc
      NAME                 PROVISIONER            RECLAIMPOLICY
      VOLUMEBINDINGMODE    ALLOWVOLUMEEXPANSION   AGE
      apigee-sc (default)  pd.csi.storage.gke.io  Delete
      WaitForFirstConsumer true                   67s
      premium-rwo          pd.csi.storage.gke.io  Delete
      WaitForFirstConsumer true                   49m
      standard             kubernetes.io/gce-pd   Delete
      Immediate            true                   49m
      standard-rwo         pd.csi.storage.gke.io  Delete
      WaitForFirstConsumer true                   49m