Это понятия из Kubernetes, которые используются для управления хранилищем данных (storage). Они решают задачу обеспечения долгоживущего хранилища для приложений, которое сохраняется независимо от жизненного цикла подов (Pods).
🚩Persistent Volume (PV)
Это объект Kubernetes, который представляет физическое хранилище, доступное в кластере. Это может быть локальное хранилище, сетевой диск (например, NFS), или облачный сервис хранения (например, Amazon EBS, Google Persistent Disk, Azure Disk).
PV создается администратором или автоматически через StorageClass. Это ресурс хранилища, выделенный для использования в кластере. Независим от подов, что позволяет хранить данные, даже если под был удален или перезапущен.
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: "/mnt/data"
🚩Persistent Volume Claim (PVC)
Это запрос на использование хранилища (PV) со стороны пользователя или приложения. Это как "заявка" на нужное количество места и определенный тип хранилища.
PVC создается разработчиком или приложением. PVC связывается с подходящим PV, который соответствует запросу. Если подходящий PV найден, он "привязывается" к PVC.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
🚩Как работают PV и PVC вместе?
🟠Создание PV
Администратор или динамическое создание выделяет хранилище (например, сетевой диск).
🟠Создание PVC
Приложение запрашивает хранилище с помощью PVC.
🟠Привязка
Kubernetes автоматически находит подходящий PV, который соответствует запросу PVC (по размерам, режимам доступа и другим параметрам). После этого PVC "связывается" с PV.
🟠Использование в поде
PVC указывается в поде как volume, что позволяет контейнерам работать с данным хранилищем.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- mountPath: "/data"
name: my-storage
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: my-pvc
Ставь 👍 и забирай 📚 Базу знаний