Middle
Šta su PV i PVC u kontekstu Kubernetes?
sobes.tech АИ
Одговор од АИ
Persistent Volume (PV) je resurs za skladištenje u Kubernetes klasteru. On apstrahuje detalje konkretne implementacije skladištenja od potrošača. PV se upravlja od strane administratora klastera i postoji nezavisno od životnog ciklusa bilo koje pod.
Persistent Volume Claim (PVC) je zahtev korisnika za skladištenje. Korisnik traži obim skladištenja sa određenim karakteristikama (veličina, režim pristupa). PVC se povezuje sa odgovarajućim PV. Ako odgovarajući PV nije pronađen, može biti dinamički kreiran novi PV ako je podešen odgovarajući StorageClass.
Glavne razlike i interakcije:
- PV: Predstavlja stvarni resurs skladištenja.
- PVC: Predstavlja zahtev za skladištenje od korisnika.
- PVC se povezuje sa PV.
- PV može biti statički kreiran od strane administratora ili dinamički kreiran na zahtev PVC koristeći StorageClass.
- Pod se referencira na PVC, a ne direktno na PV, što omogućava odvajanje logike aplikacije od detalja skladištenja.
Režimi pristupa (Access Modes) za PV i PVC:
ReadWriteOnce(RWO): Volumen može biti montiran za čitanje i pisanje od strane jednog čvora istovremeno.ReadOnlyMany(ROX): Volumen može biti montiran samo za čitanje od strane više čvorova istovremeno.ReadWriteMany(RWX): Volumen može biti montiran za čitanje i pisanje od strane više čvorova istovremeno.
Primer YAML za PV i PVC:
# persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain # Šta da se uradi sa volumenom nakon brisanja PVC (Retain, Recycle, Delete)
storageClassName: local-storage # Može biti korišćen za povezivanje sa StorageClass
local:
path: /mnt/data
nodeAffinity: # Afinitet za lokalno skladište
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 # Povezuje se sa PV ili 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 # Referenca na PVC