Ce sunt PV și PVC în contextul Kubernetes?
sobes.tech AI
Răspuns de la AI
Volumul Persisten (PV) este o resursă de stocare în clusterul Kubernetes. Acesta abstractizează detaliile implementării specifice a stocării pentru consumatori. PV este gestionat de administratorul clusterului și există independent de ciclul de viață al oricărui pod.
Cererea de Volum Persisten (PVC) este o solicitare a utilizatorului pentru stocare. Utilizatorul solicită un volum de stocare cu caracteristici specifice (dimensiune, mod de acces). PVC se leagă de un PV potrivit. Dacă nu se găsește un PV potrivit, se poate realiza o provisioning dinamică a unui nou PV dacă este configurat un StorageClass corespunzător.
Diferențele principale și interacțiunile:
- PV: Reprezintă resursa de stocare efectivă.
- PVC: Reprezintă solicitarea de stocare a utilizatorului.
- PVC se leagă de PV.
- PV poate fi creat static de administrator sau dinamic în răspuns la o PVC folosind un StorageClass.
- Pod face referire la PVC, nu direct la PV, ceea ce permite separarea logicii aplicației de detaliile de stocare.
Modurile de acces (Access Modes) pentru PV și PVC:
ReadWriteOnce(RWO): Volumul poate fi montat pentru citire și scriere de către un singur nod simultan.ReadOnlyMany(ROX): Volumul poate fi montat doar pentru citire de către mai mulți noduri simultan.ReadWriteMany(RWX): Volumul poate fi montat pentru citire și scriere de către mai mulți noduri simultan.
Exemplu YAML pentru PV și PVC:
# persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain # Ce să facă cu volumul după ștergerea PVC (Retain, Recycle, Delete)
storageClassName: local-storage # Poate fi folosit pentru a lega cu un StorageClass
local:
path: /mnt/data
nodeAffinity: # Afiliație pentru stocare locală
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- my-node
# persistent-volume-claim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: local-storage # Legat de PV sau StorageClass
# pod-using-pvc.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app-container
image: nginx
volumeMounts:
- name: app-storage
mountPath: /usr/share/nginx/html
volumes:
- name: app-storage
persistentVolumeClaim:
claimName: my-pvc # Referință la PVC