Ответ
Да, данные в Persistent Volume (PV) сохранятся. PV и связанный с ним Persistent Volume Claim (PVC) являются независимыми ресурсами кластера Kubernetes, отдельными от жизненного цикла пода.
Механика работы:
- Pod подключает том через
persistentVolumeClaimв спецификации. - При удалении пода (
kubectl delete pod/my-app) том отключается от узла, но сам ресурс PV/PVC и данные на нём остаются. - Когда будет создан новый под, использующий тот же самый PVC, он получит доступ к тем же данным.
Пример манифеста пода с PVC:
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app
image: nginx:alpine
volumeMounts:
- name: app-storage
mountPath: /usr/share/nginx/html
volumes:
- name: app-storage
persistentVolumeClaim:
claimName: my-app-pvc # Ссылка на PVC, а не напрямую на PV
Важные исключения и настройки:
- Reclaim Policy PV: Поведение при удалении самого PVC регулируется политикой
persistentVolumeReclaimPolicyPV:Retain(по умолчанию для ручных PV) — данные и PV сохраняются, но требуют ручной очистки для повторного использования.Delete(часто для динамических PV) — удаление PVC приведёт к автоматическому удалению PV и данных в облачном хранилище.Recycle(устарело) — данные очищались, но эта политика более не рекомендуется.
- StorageClass: Определяет динамическое provisioning и политику reclaim по умолчанию.