Middle
Kas yra PV ir PVC Kubernetes kontekste?
sobes.tech AI
Atsakymas iš AI
Nuolatinis tūris (PV) — tai išteklius Kubernetes klasteryje. Jis abstrakčiuoja konkrečios saugojimo įgyvendinimo detales nuo vartotojų. PV valdo klasterio administratorius ir jis egzistuoja nepriklausomai nuo bet kurio pod gyvenimo ciklo.
Nuolatinio tūrio reikalavimas (PVC) — tai vartotojo užklausa saugojimui. Vartotojas prašo saugojimo kiekio su tam tikromis savybėmis (dydis, prieigos režimas). PVC yra susietas su tinkamu PV. Jei tinkamas PV nerandamas, gali būti dinamiškai sukurtas naujas PV, jei yra sukonfigūruotas atitinkamas StorageClass.
Pagrindiniai skirtumai ir sąveika:
- PV: atstovauja faktinį saugojimo išteklių.
- PVC: atstovauja vartotojo užklausą dėl saugojimo.
- PVC yra susietas su PV.
- PV gali būti statinis, sukurtas administratoriaus, arba dinamiškai sukurtas pagal PVC užklausą naudojant StorageClass.
- Pod nurodo į PVC, o ne tiesiogiai į PV, tai leidžia atskirti programėlės logiką nuo saugojimo detalių.
Prieigos režimai (Access Modes) PV ir PVC:
ReadWriteOnce(RWO): Tūris gali būti montuojamas kaip skaityti ir rašyti vienu mazgu vienu metu.ReadOnlyMany(ROX): Tūris gali būti montuojamas tik skaityti daugeliu mazgų vienu metu.ReadWriteMany(RWX): Tūris gali būti montuojamas kaip skaityti ir rašyti daugeliu mazgų vienu metu.
Pavyzdinis YAML PV ir PVC:
# persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain # Kas daryti su tūriu po PVC ištrynimo (Retain, Recycle, Delete)
storageClassName: local-storage # Gali būti naudojamas susiejimui su StorageClass
local:
path: /mnt/data
nodeAffinity: # Lokalios saugojimo afinitetai
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 # Susiejimas su PV arba 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 # Nuoroda į PVC