Ответ
PersistentVolume (PV) — это ресурс кластера Kubernetes, представляющий фрагмент сетевого или локального хранилища, подготовленный администратором. PV существует независимо от Pod'ов и имеет собственный жизненный цикл.
Основные характеристики PV:
- Емкость (capacity): Объем хранилища (например, 10Gi).
- Режимы доступа (accessModes): Определяют, как Pod может монтировать том:
ReadWriteOnce(RWO) — чтение/запись одним узлом.ReadOnlyMany(ROX) — чтение многими узлами.ReadWriteMany(RWX) — чтение/запись многими узлами.
- Политика рекламации (reclaimPolicy): Что происходит с PV после удаления связанного PVC:
Retain— том и данные сохраняются вручную.Delete— том и данные удаляются (зависит от провайдера).Recycle(устаревший) — данные удаляются, том становится доступен для нового PVC.
Пример статического PV на основе hostPath (для тестов):
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-hostpath-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /mnt/data
type: DirectoryOrCreate
Как это работает: Разработчики не запрашивают PV напрямую. Вместо этого они создают PersistentVolumeClaim (PVC), который является запросом на хранилище с определенными характеристиками. Контроллер Kubernetes затем привязывает подходящий PV к этому PVC. Для автоматического создания томов используется StorageClass.