kubernetes-101-volumes
Kubernetes 101 - Volumes
December 21, 2022
Andrei Saizu

Introduction

Q:❓What is a Volume

A: A directory with data accessible to all containers in a pod.

Kubernetes supports many types of volumes.

🔸 Persistent Volumes

🔸 Ephemeral Volumes

🔸 Projected Volumes

🔸 etc.

A pod can use any number of volume types simultaneously.

🔵  Persistent Volume (PV)

This is a storage element in a cluster, defined manually by an administrator or dynamically defined by a storage class.

A PV has its own lifecycle, separate from the lifecycle of Kubernetes pods.

apiVersion: v1

kind: PersistentVolume

metadata:

   name: pv-volume

spec:

   storageClassName: manual

   capacity:

       storage: 10Gi

   accessModes:

    - ReadWriteOnce

   hostPath:

       path: "/mnt/data"

🔵  Persistent Volume Claim (PVC)

This one defines a storage request.

Let's say we have an application running on a container that needs a certain type of storage: 3 Gi of storage and needs to read and write data.

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

   name: pv-claim

spec:

   storageClassName: manual

   accessModes: - ReadWriteOnce

   resources:

       requests:

           storage: 3Gi

🧩  Usage

Let's put them all together!

The pod running the application doesn't need to know the exact PV  it's accessing.

It only needs to specify what type of access it needs, how much storage, and what type of storage.

apiVersion: v1

kind: Pod

metadata:

    name: pv-pod

spec:

   volumes:

     - name: pv-storage

        persistentVolumeClaim:

            claimName: pv-claim

   containers:

   - name: pv-container

      image: nginx

      volumeMounts:

        - mountPath: "/usr/share/nginx/html"

          name: pv-storage

Follow the Kubernetes 101 series on mindit.io.

Check out new-spike.net for other articles on Kubernetes and much more! 🚀

Talk to the team

ASK US SOMETHING OR JUST SAY HELLO, WE'RE HERE.
Contact