Persistent Storage: A Guide to Mounting a Directory in Kubernetes

Persistent Storage: A Guide to Mounting a Directory in Kubernetes
Kubernetes, the open-source platform for automating deployment, scaling, and managing containerized applications, has become a go-to solution for many data scientists. One of its most powerful features is its ability to handle persistent storage. This blog post will guide you through the process of mounting a directory in Kubernetes, a crucial step for managing data in your applications.
What is Persistent Storage in Kubernetes?
Before we dive into the how-to, let’s briefly discuss what persistent storage is and why it’s important in Kubernetes.
In Kubernetes, the data stored in a container is ephemeral, meaning it disappears when the container stops running. This is where persistent storage comes in. Persistent storage allows data to survive container restarts and crashes, ensuring that your application’s data remains safe and accessible.
Step 1: Understanding Persistent Volumes and Persistent Volume Claims
The first step in mounting a directory in Kubernetes is understanding the concepts of Persistent Volumes (PVs) and Persistent Volume Claims (PVCs).
A Persistent Volume (PV) is a piece of storage in the cluster that has been provisioned by an administrator. It is a resource in the cluster just like a node and is independent of any individual pod that uses the PV.
A Persistent Volume Claim (PVC) is a request for storage by a user. It is similar to a pod. Pods consume node resources, and PVCs consume PV resources.
Step 2: Creating a Persistent Volume
To create a PV, you need to create a YAML file that describes the properties of the volume. Here’s an example:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-volume
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/tmp/data"
In this example, we’re creating a PV named pv-volume
with a storage capacity of 1Gi and a ReadWriteOnce
access mode, meaning the volume can be mounted as read-write by a single node.
Step 3: Creating a Persistent Volume Claim
After creating a PV, the next step is to create a PVC. Here’s an example of a PVC YAML file:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
In this example, we’re creating a PVC named pv-claim
that requests a storage size of 1Gi.
Step 4: Mounting the Persistent Volume Claim in a Pod
The final step is to mount the PVC in a pod. Here’s an example of how to do this:
apiVersion: v1
kind: Pod
metadata:
name: pv-pod
spec:
volumes:
- name: pv-storage
persistentVolumeClaim:
claimName: pv-claim
containers:
- name: pv-container
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: pv-storage
In this example, we’re creating a pod named pv-pod
that mounts the PVC pv-claim
to the path /usr/share/nginx/html
.
Conclusion
Mounting a directory in Kubernetes using persistent storage is a crucial skill for data scientists working with containerized applications. By understanding and implementing Persistent Volumes and Persistent Volume Claims, you can ensure that your application’s data remains safe and accessible, even if a container stops running.
Remember, Kubernetes is a powerful tool, but with great power comes great responsibility. Always ensure that your PVs and PVCs are configured correctly to prevent data loss.
We hope this guide has been helpful in your Kubernetes journey. Stay tuned for more posts on how to leverage the power of Kubernetes in your data science projects.
About Saturn Cloud
Saturn Cloud is your all-in-one solution for data science & ML development, deployment, and data pipelines in the cloud. Spin up a notebook with 4TB of RAM, add a GPU, connect to a distributed cluster of workers, and more. Join today and get 150 hours of free compute per month.