📖 Scenario: You are managing a Kubernetes cluster that runs applications needing to save data permanently. You want to understand how to set up storage that keeps data safe even if containers restart or move.
🎯 Goal: Learn how to create a PersistentVolumeClaim in Kubernetes and use it in a Pod to keep data persistent across container restarts.
📋 What You'll Learn
Create a PersistentVolumeClaim named my-pvc requesting 1Gi of storage
Create a Pod named storage-demo that uses the my-pvc volume
Mount the volume inside the Pod at /data
Verify the Pod can write and read data from the persistent volume
💡 Why This Matters
🌍 Real World
Applications like databases, content management systems, and file servers need persistent storage to keep data safe even if containers restart or move to other nodes.
💼 Career
Understanding persistent storage in Kubernetes is crucial for DevOps engineers and cloud administrators to ensure data durability and application reliability.
Progress0 / 4 steps
1
Create a PersistentVolumeClaim
Write a YAML manifest to create a PersistentVolumeClaim named my-pvc that requests 1Gi of storage with access mode ReadWriteOnce.
Kubernetes
Hint
Use kind: PersistentVolumeClaim and specify storage: 1Gi under resources.requests.
2
Create a Pod that uses the PersistentVolumeClaim
Write a YAML manifest to create a Pod named storage-demo that mounts the PersistentVolumeClaim my-pvc as a volume named mypvc-volume inside the container at path /data. Use the image busybox and keep the container running with sleep 3600.
Kubernetes
Hint
Define a Pod with a container that mounts the volume from my-pvc at /data.
3
Write data inside the Pod to the persistent volume
Use kubectl exec to run the command echo 'Hello Kubernetes' > /data/message.txt inside the storage-demo Pod to write data to the persistent volume.
Kubernetes
Hint
Use kubectl exec with sh -c to write the text into /data/message.txt.
4
Read the data back from the persistent volume
Use kubectl exec to run cat /data/message.txt inside the storage-demo Pod and print the output to verify the data is saved persistently.
Kubernetes
Hint
Use kubectl exec storage-demo -- cat /data/message.txt to read and print the file content.
Practice
(1/5)
1. Why is persistent storage important in Kubernetes?
easy
A. It speeds up container startup time
B. It manages network traffic between pods
C. It automatically scales the number of pods
D. It keeps data safe even if containers stop or restart
Solution
Step 1: Understand container lifecycle
Containers can stop or restart anytime, losing any data stored inside them.
Step 2: Role of persistent storage
Persistent storage keeps data safe beyond container life, so data is not lost.
Final Answer:
It keeps data safe even if containers stop or restart -> Option D
Quick Check:
Persistent storage = data safety beyond containers [OK]
Hint: Persistent storage saves data beyond container life [OK]
Common Mistakes:
Thinking persistent storage speeds up containers
Confusing storage with network management
Assuming storage auto-scales pods
2. Which of the following is the correct way to request persistent storage in Kubernetes?
easy
A. kubectl get storageclass
B. kubectl create pod --storage
C. kubectl apply -f persistentvolumeclaim.yaml
D. kubectl delete pvc
Solution
Step 1: Identify how to request storage
PersistentVolumeClaim (PVC) is used to request storage in Kubernetes.
Step 2: Correct command to apply PVC
Using kubectl apply -f persistentvolumeclaim.yaml applies the PVC configuration.
Final Answer:
kubectl apply -f persistentvolumeclaim.yaml -> Option C
Quick Check:
Request storage with PVC YAML and apply [OK]
Hint: Use kubectl apply with PVC YAML to request storage [OK]
Common Mistakes:
Using pod creation command to request storage
Confusing storageclass listing with requesting storage
A. The volume can be mounted as read-write by only one pod at a time
B. The volume is automatically deleted when pod stops
C. The volume is read-only for all pods
D. The volume can be mounted as read-write by many pods simultaneously
Solution
Step 1: Understand accessModes in PVC
AccessModes define how many pods can mount the volume and with what permissions.
Step 2: Meaning of ReadWriteOnce
ReadWriteOnce means only one pod can mount the volume as read-write at a time.
Final Answer:
The volume can be mounted as read-write by only one pod at a time -> Option A
Quick Check:
ReadWriteOnce = single pod read-write mount [OK]
Hint: ReadWriteOnce means single pod read-write access [OK]
Common Mistakes:
Thinking ReadWriteOnce allows multiple pods
Confusing read-only with ReadWriteOnce
Assuming volume auto-deletes with pod
4. You created a PersistentVolumeClaim but your pod fails to mount the volume with error "volume not found". What is the most likely cause?
medium
A. The PersistentVolumeClaim name does not match the volume name in the pod spec
B. The pod spec is missing the container image
C. The PersistentVolumeClaim requested storage size is too small
D. The pod is missing resource limits
Solution
Step 1: Check volume mount configuration
The pod must reference the PVC by the exact name to mount the volume.
Step 2: Identify cause of "volume not found" error
If names don't match, Kubernetes cannot find the volume to mount.
Final Answer:
The PersistentVolumeClaim name does not match the volume name in the pod spec -> Option A
Quick Check:
Volume mount fails if PVC name mismatches [OK]
Hint: Match PVC name exactly in pod volume spec [OK]
Common Mistakes:
Ignoring volume name mismatch
Blaming container image for volume errors
Assuming storage size causes mount failure
5. You want two pods to share the same persistent storage volume with read-write access at the same time. Which access mode should you specify in your PersistentVolumeClaim?
hard
A. ReadWriteOnce
B. ReadWriteMany
C. ReadOnlyMany
D. WriteOnce
Solution
Step 1: Understand access modes for sharing
ReadWriteMany allows multiple pods to mount the volume as read-write simultaneously.
Step 2: Choose correct access mode for sharing
Since two pods need read-write access at the same time, ReadWriteMany is required.
Final Answer:
ReadWriteMany -> Option B
Quick Check:
Multiple pods read-write = ReadWriteMany [OK]
Hint: Use ReadWriteMany for shared read-write access [OK]
Common Mistakes:
Using ReadWriteOnce which allows only one pod
Confusing ReadOnlyMany with read-write access
Selecting non-existent WriteOnce mode
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.