Volumes persistants et demandes de volumes persistants
Comprenez comment allouer et utiliser dynamiquement du stockage dans Kubernetes à l’aide des PV et des PVC.
Volumes persistants et demandes de volumes persistants est une leçon Docker & Kubernetes for Developers gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Docker & Kubernetes for Developers, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Docker & Kubernetes for Developers comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Ephemeral Pods, Persistent Data
In Kubernetes, Pods are designed to be temporary and replaceable. If a Pod crashes or is rescheduled, any data stored directly within it is lost.
This ephemeral nature is great for stateless applications, but what about applications that need to store data persistently, like databases or file servers?
Introducing Persistent Volumes
A Persistent Volume (PV) is a piece of storage in the cluster that has been provisioned by an administrator or dynamically by Kubernetes.
It's an abstraction of the underlying storage (like a cloud disk, NFS share, or local disk), making it available for use by Pods without them needing to know the storage's specifics.
PV Capacity & Access Modes
Each PV has specific characteristics:
- Capacity: The size of the storage, e.g.,
10Gi. - Access Modes: How the storage can be mounted by Pods.
- Reclaim Policy: What happens to the volume after a Pod is done using it.
These properties help Kubernetes match storage requests to available volumes.
How Pods Access Storage
PV Access Modes define how the volume can be mounted:
ReadWriteOnce (RWO): The volume can be mounted as read-write by a single node.ReadOnlyMany (ROX): The volume can be mounted as read-only by many nodes.ReadWriteMany (RWX): The volume can be mounted as read-write by many nodes.
Not all storage types support all modes. For example, a local disk typically only supports RWO.
Handling Released PVs
A PV's Reclaim Policy dictates what happens to the underlying storage when the PV is released from its claim:
Retain: Manual reclamation. Data remains, administrator must manually delete.Delete: The underlying storage is automatically deleted along with the PV. This is common for dynamically provisioned volumes.Recycle: (Deprecated) Wipes the volume and makes it available again.
Retain is useful for critical data that needs manual review before deletion.
Requesting Persistent Storage
A Persistent Volume Claim (PVC) is a request for storage by a user or application.
Think of it like a request for a specific type and size of storage. Instead of directly interacting with PVs, Pods request storage through PVCs.
PVCs provide a layer of abstraction, allowing developers to request storage without knowing the underlying infrastructure details.
Matching Storage Requests
When a PVC is created, Kubernetes tries to find a suitable PV to bind it to. This process is called binding.
It looks for PVs that meet the PVC's requirements:
- Capacity (size)
- Access Modes
- Storage Class (if specified)
Once bound, the PV is exclusively reserved for that PVC.
Defining a Basic PV
Here's how you might define a simple hostPath Persistent Volume. This type uses a directory on the node's filesystem, primarily for single-node testing.
Try running this example (kubectl apply -f pv.yaml):
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: "/mnt/data"Requesting Storage with a PVC
Now, let's create a Persistent Volume Claim that requests 1Gi of storage with ReadWriteOnce access. It will bind to our my-pv if available.
Try running this example (kubectl apply -f pvc.yaml):
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1GiAttaching PVC to a Pod
Finally, let's see how a Pod can use the storage provided by our PVC. We reference the PVC in the Pod's volumes section and then mount it into a container.
Try running this example (kubectl apply -f pod.yaml):
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: my-pvc
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo 'Hello from CoddyKit!' > /data/message.txt && sleep 3600"]
volumeMounts:
- mountPath: "/data"
name: my-storagePV vs. PVC Roles
Understanding the distinct roles of Persistent Volumes (PVs) and Persistent Volume Claims (PVCs) is crucial for managing storage in Kubernetes.
Which statement accurately describes the primary role of a Persistent Volume (PV)?
Recap: Persistent Storage
Great job! You've learned how Kubernetes manages persistent storage:
- Persistent Volumes (PVs) abstract physical storage resources.
- Persistent Volume Claims (PVCs) are user requests for storage.
- PVs have capacity, access modes (RWO, ROX, RWX), and reclaim policies (Retain, Delete).
- PVCs bind to available PVs, and Pods then use PVCs to mount storage.
This system allows applications to reliably store data, even when Pods are recreated or moved.
Questions Fréquemment Posées
La leçon « Volumes persistants et demandes de volumes persistants » est-elle gratuite ?
Oui — le texte complet de « Volumes persistants et demandes de volumes persistants » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Docker & Kubernetes for Developers, passe à CoddyKit PRO. Le cours Docker & Kubernetes for Developers comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Volumes persistants et demandes de volumes persistants » ?
Comprenez comment allouer et utiliser dynamiquement du stockage dans Kubernetes à l’aide des PV et des PVC. Tu pratiques Docker & Kubernetes for Developers avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Docker & Kubernetes for Developers ?
Aucune expérience préalable n'est requise. Docker & Kubernetes for Developers sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Volumes persistants et demandes de volumes persistants » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Docker & Kubernetes for Developers ?
Oui. Chaque leçon Docker & Kubernetes for Developers inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Volumes persistants et demandes de volumes persistants
- Gérer les applications avec état avec StatefulSets
- ConfigMaps et secrets pour la configuration
- Classes de stockage et approvisionnement dynamique