PersistentVolume a PersistentVolumeClaim v Kubernetes

PersistentVolume (PV) a PersistentVolumeClaim (PVC) jsou klíčové komponenty pro práci s perzistentním uložištěm dat v Kubernetes. Poskytují způsob, jak spravovat úložiště nezávisle na životním cyklu podů, což je zásadní pro stavové aplikace, které vyžadují trvalé ukládání dat.

PersistentVolume (PV)

PersistentVolume je zdroj úložiště v Kubernetes klastru, který byl vytvořen správcem a je dostupný pro použití uživateli. PV jsou abstrahovány od podů a umožňují administrátorům definovat různé typy úložišť (např. NFS, iSCSI, cloudové úložiště jako AWS EBS nebo GCP Persistent Disks).

Obecne lze tedy rict

PersistentVolume (PV) a PersistentVolumeClaim (PVC) jsou základními stavebními kameny pro práci s trvalým uložištěm v Kubernetes. PV poskytují skutečné úložiště, zatímco PVC jsou žádosti o toto úložiště. Tento model umožňuje oddělit správu úložiště od správy aplikací a poskytuje flexibilní a škálovatelný způsob, jak pracovat s trvalými daty v Kubernetes.

Hlavní vlastnosti PV:

Příklad PV:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-example
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: /mnt/data

PersistentVolumeClaim (PVC)

PersistentVolumeClaim je žádost o úložiště ze strany uživatele. PVC se používá k žádání o určitou kapacitu úložiště a přístupovou politiku. PVC jsou spojeny s PV, které splňují požadavky uživatele.

Hlavní vlastnosti PVC:

Příklad PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-example
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

Jak PV a PVC spolupracují

  1. Administrátor vytvoří PV.
  2. Uživatel vytvoří PVC, kde specifikuje požadavky na úložiště.
  3. Kubernetes kontroler pro PV a PVC spojuje PVC s PV, které splňují specifikované požadavky.
  4. Pod používá PVC k připojení PV jako úložiště.

Příklad použití PV a PVC v podu

apiVersion: v1
kind: Pod
metadata:
  name: pod-using-pvc
spec:
  containers:
    - name: app
      image: busybox
      command: ["sleep", "3600"]
      volumeMounts:
        - mountPath: "/data"
          name: volume
  volumes:
    - name: volume
      persistentVolumeClaim:
        claimName: pvc-example