Cum să folosești PersistentVolumeClaim în Kubernetes
DodaTech
Updated 2025-01-15
2 min read
In this tutorial, you'll learn about Cum să folosești PersistentVolumeClaim în Kubernetes. We cover key concepts, practical examples, and best practices.
Problema
Aplicațiile tale cu stare (baze de date, fișiere) au nevoie de stocare care să supraviețuiască restart-urilor de Pod-uri și migrărilor între noduri.
Soluția Pas cu Pas
1. Creează un PersistentVolume (PV)
apiVersion: v1
kind: PersistentVolume
metadata:
name: data-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /mnt/data
kubectl apply -f pv.yaml
Output:
persistentvolume/data-pv created
2. Creează un PersistentVolumeClaim (PVC)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
kubectl apply -f pvc.yaml
Output:
persistentvolumeclaim/data-pvc created
3. Verifică legătura PV-PVC
kubectl get pv
kubectl get pvc
Output:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM
data-pv 5Gi RWO Retain Bound default/data-pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS
data-pvc Bound data-pv 5Gi RWO
4. Montează PVC într-un Pod
apiVersion: v1
kind: Pod
metadata:
name: pvc-pod
spec:
containers:
- name: app
image: nginx
volumeMounts:
- name: storage
mountPath: /usr/share/nginx/html
volumes:
- name: storage
persistentVolumeClaim:
claimName: data-pvc
5. Testează persistența
kubectl exec pvc-pod -- sh -c "echo 'Date persistente' > /usr/share/nginx/html/test.txt"
kubectl delete pod pvc-pod
kubectl apply -f pod.yaml # re-creează Pod-ul
kubectl exec pvc-pod -- cat /usr/share/nginx/html/test.txt
Output:
Date persistente
6. Șterge PVC-ul
kubectl delete pvc data-pvc
StorageClass și Dynamic Provisioning
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd
spec:
storageClassName: fast
Prevenție
- Alege
accessModescorect:ReadWriteOnce(un singur nod),ReadOnlyMany,ReadWriteMany. - Configurează
storageClassNamepentru a controla tipul de stocare. - Setează
persistentVolumeReclaimPolicy: Retainpentru date importante. - Folosește dynamic provisioning cu StorageClass pentru automatizare.
Greșeli Comune
- PVC fără PV sau StorageClass — Rămâne în
Pendingdacă nu există resurse. - AccessMode incompatibil — PVC-ul nu se leagă de un PV cu accessMode diferit.
- Storage insuficient — PVC-ul cere mai mult spațiu decât oferă orice PV disponibil.
- ReclaimPolicy Delete — PV-ul și datele se șterg automat când PVC-ul este șters.
- Selector greșit —
selector.matchLabelstrebuie să se potrivească cu label-urile PV-ului.
Exercițiu
Creează un PV de 2Gi, un PVC care cere 1Gi, montează-l într-un Pod, scrie un fișier, șterge Pod-ul, creează un Pod nou și verifică că fișierul există.
FAQ
Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează seamless cu Kubernetes pentru productivitate și securitate sporite.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro