Middle
Čo sú PV a PVC v kontexte Kubernetes?
sobes.tech AI
Odpoveď od AI
Persistent Volume (PV) je zdroj úložiska v Kubernetes klastre. Abstrahuje detaily konkrétnej implementácie úložiska od spotrebiteľov. PV je spravovaný správcom klastru a existuje nezávisle od životného cyklu akéhokoľvek podu.
Persistent Volume Claim (PVC) je požiadavka používateľa na úložisko. Používateľ žiada o objem úložiska s určitými vlastnosťami (veľkosť, režim prístupu). PVC sa spája s vhodným PV. Ak nie je nájdené vhodné PV, môže byť dynamicky vytvorený nový PV, ak je nakonfigurovaný príslušný StorageClass.
Hlavné rozdiely a interakcie:
- PV: Predstavuje skutočný zdroj úložiska.
- PVC: Predstavuje požiadavku na úložisko od používateľa.
- PVC sa spája s PV.
- PV môže byť staticky vytvorený správcom alebo dynamicky vytvorený na základe požiadavky PVC s použitím StorageClass.
- Pod odkazuje na PVC, nie priamo na PV, čo umožňuje oddeliť logiku aplikácie od detailov úložiska.
Režimy prístupu (Access Modes) pre PV a PVC:
ReadWriteOnce(RWO): Svazok môže byť namontovaný ako pre čítanie, tak aj pre zápis jedným uzlom súčasne.ReadOnlyMany(ROX): Svazok môže byť namontovaný iba pre čítanie mnohými uzlami súčasne.ReadWriteMany(RWX): Svazok môže byť namontovaný ako pre čítanie, tak aj pre zápis mnohými uzlami súčasne.
Príklad YAML pre PV a PVC:
# persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain # Čo robiť so svazkom po odstránení PVC (Retain, Recycle, Delete)
storageClassName: local-storage # Môže byť použitý na spájanie s StorageClass
local:
path: /mnt/data
nodeAffinity: # Afinita pre lokálne úložisko
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 # Spája sa s PV alebo 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 # Odkaz na PVC