Тома: PersistentVolume и PVC
Данные внутри пода исчезают вместе с ним — для постоянного хранилища нужны PersistentVolume и PVC.
PersistentVolume (PV) — кусок хранилища в кластере; PersistentVolumeClaim (PVC) — запрос пода на хранилище нужного размера.
Файловая система контейнера эфемерна: пересоздался под — данные пропали. Для базы данных это катастрофа. Решение — подключить к поду том, живущий независимо от пода. Самый важный класс таких томов — постоянные (persistent).
Разделение ролей: PV и PVC
Kubernetes разделяет «что есть» и «что нужно»:
- PV — реальное хранилище (диск в облаке, NFS, локальный путь). Это ресурс уровня кластера.
- PVC — заявка пода: «дайте мне 5 ГБ с доступом на чтение-запись». Kubernetes подбирает подходящий PV.
Такое разделение освобождает разработчика от знания, какой именно диск под капотом: он просто просит объём.
Заявка на хранилище (PVC)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data-pvc
spec:
accessModes:
- ReadWriteOnce # запись с одного узла
resources:
requests:
storage: 5GiМонтируем PVC в под
spec:
containers:
- name: db
image: postgres:16
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
volumes:
- name: data
persistentVolumeClaim:
claimName: data-pvcТеперь данные Postgres лежат на постоянном томе. Под пересоздаётся — данные на месте.
StorageClass и динамическое выделение
Создавать PV вручную утомительно. В облаке работает StorageClass: вы создаёте только PVC, а PV выделяется автоматически (облако заводит диск под заявку). В большинстве кластеров есть StorageClass по умолчанию, поэтому хватает одного PVC.
kubectl get pvc
kubectl get pvВывод:
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE data-pvc Bound pvc-9f3a... 5Gi RWO 12s
Статус Bound значит, что заявка успешно связана с реальным томом.
| Объект | Смысл |
| Volume (emptyDir) | временный, живёт с подом |
| PV | реальное постоянное хранилище |
| PVC | заявка пода на хранилище |
| StorageClass | авто-выделение PV под заявку |
Итог
- Файловая система контейнера эфемерна — для данных нужны постоянные тома.
- PV — реальное хранилище, PVC — заявка пода на него.
- StorageClass выделяет PV автоматически под PVC (особенно в облаке).