Сохранятся ли данные в Persistent Volume (PV) после удаления пода (Pod) в Kubernetes?

«Сохранятся ли данные в Persistent Volume (PV) после удаления пода (Pod) в Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, данные в Persistent Volume (PV) сохранятся. PV и связанный с ним Persistent Volume Claim (PVC) являются независимыми ресурсами кластера Kubernetes, отдельными от жизненного цикла пода.

Механика работы:

  1. Pod подключает том через persistentVolumeClaim в спецификации.
  2. При удалении пода (kubectl delete pod/my-app) том отключается от узла, но сам ресурс PV/PVC и данные на нём остаются.
  3. Когда будет создан новый под, использующий тот же самый 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 регулируется политикой persistentVolumeReclaimPolicy PV:
    • Retain (по умолчанию для ручных PV) — данные и PV сохраняются, но требуют ручной очистки для повторного использования.
    • Delete (часто для динамических PV) — удаление PVC приведёт к автоматическому удалению PV и данных в облачном хранилище.
    • Recycle (устарело) — данные очищались, но эта политика более не рекомендуется.
  • StorageClass: Определяет динамическое provisioning и политику reclaim по умолчанию.