Persistent Storage for Kubernetes with StorageClass

In Kubernetes, managing persistent storage involves creating a StorageClass, which defines the types of storage to be used for persistent volumes (PV). Here's a step-by-step explanation of how to use dynamic provisioning for persistent storage in a Kubernetes cluster.

Step 1: Declare a StorageClass

  • A StorageClass is a way to describe the provisioning of storage in a Kubernetes cluster. It defines parameters such as the storage provider (e.g., Amazon EBS, NFS, etc.) and other configuration details.
  • Depending on your cluster, there may already be a default StorageClass. If not, you will need to manually declare one.

Example of defining a StorageClass for Amazon EBS:


apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ebs-sc
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2

Step 2: Create a PersistentVolumeClaim (PVC)

Once the StorageClass is defined, you can create a PersistentVolumeClaim (PVC) that requests a specific amount of storage from a StorageClass.

Example of a PVC that uses the previously declared StorageClass:


apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: ebs-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi

Step 3: Reference PVC in StatefulSet

Now, you can reference the PVC in your StatefulSet application. This allows your application to use the persistent storage.

Example of a StatefulSet using the PVC:


apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-stateful-app
spec:
serviceName: "my-service"
replicas: 1
selector:
matchLabels:
app: my-stateful-app
template:
metadata:
labels:
app: my-stateful-app
spec:
containers:
- name: my-container
image: my-image
volumeMounts:
- name: my-storage
mountPath: /data
volumeClaimTemplates:
- metadata:
name: my-storage
spec:
storageClassName: ebs-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi

Step 4: Automatic PV Creation

Once the PVC is created, Kubernetes will automatically provision a PersistentVolume (PV) that matches the storage class and requirements specified in the PVC. The PV will be automatically bound to the PVC, and your application can use the persistent storage.

Conclusion

  • Kubernetes uses StorageClass to define how storage should be provisioned dynamically.
  • The PVC references the StorageClass, and Kubernetes takes care of provisioning the PV automatically.
  • Once the PVC is bound to a PV, your application can use persistent storage even if the cluster is restarted.

Message for Readers: Keep learning a little every day, and always take notes to enhance your knowledge and skills!

#Kubernetes #PersistentStorage #StorageClass

Comments

Popular posts from this blog

Fixing the DeepSpeed Import Error While Fine-Tuning the Qwen Model

Amazon Linux 2023 - User data configuration for launch templates to connect to the EKS cluster

How to create ISM policy and rotate logs in opensearch