Sobes.tech
Middle

Mi az a PV és PVC a Kubernetes kontextusában?

sobes.tech MI

Válasz az MI-től

A Tartós Tároló (PV) a Kubernetes klaszterben egy tárolási erőforrás. Elrejti a tárolás konkrét megvalósításának részleteit a fogyasztóktól. A PV-t a klaszter adminisztrátora kezeli, és függetlenül létezik bármely pod életciklusától.

A Tartós Tárolási Igény (PVC) a felhasználó tárolásra vonatkozó kérését jelenti. A felhasználó egy adott jellemzőkkel (méret, hozzáférési mód) rendelkező tárolóvolument kér. A PVC-t egy megfelelő PV-hez kapcsolják. Ha nem található megfelelő PV, akkor a megfelelő StorageClass beállításával dinamikus új PV-t lehet létrehozni.

Fő különbségek és kölcsönhatások:

  • PV: A tényleges tárolóerőforrást képviseli.
  • PVC: A felhasználó tárolási kérését képviseli.
  • A PVC kapcsolódik egy PV-hez.
  • A PV lehet statikusan létrehozva az adminisztrátor által, vagy dinamikusan a PVC-re adott válaszként a StorageClass segítségével.
  • A pod a PVC-re hivatkozik, nem közvetlenül a PV-re, ez lehetővé teszi az alkalmazás logikájának elkülönítését a tárolási részletektől.

Hozzáférési módok (Access Modes) PV és PVC esetén:

  • ReadWriteOnce (RWO): A volumen egy időben csak egy csomópont által csatolható olvasásra és írásra.
  • ReadOnlyMany (ROX): A volumen csak olvasásra csatolható több csomópont által egy időben.
  • ReadWriteMany (RWX): A volumen több csomópont által olvasásra és írásra csatolható egy időben.

YAML példa PV és PVC esetén:

# persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain # Mit tegyen a volumennel a PVC törlése után (Retain, Recycle, Delete)
  storageClassName: local-storage # Használható a StorageClass-hoz való kötéshez
  local:
    path: /mnt/data
  nodeAffinity: # Helyi tárolás affinitása
    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 # Kapcsolódik a PV-hez vagy a StorageClass-hoz
# 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 # Hivatkozás a PVC-re