PersistentVolume (PV) представляет собой объект API Kubernetes, отображающий связь с томами бэкенд-хранилища в кластере Kubernetes. Это ресурс кластера, который создаётся и настраивается администраторами единообразно, отвечая за абстрагирование реальных ресурсов хранения и формирование инфраструктуры хранения кластера.
PersistentVolumes обладают жизненным циклом, независимым от Pod, что позволяет обеспечивать постоянное хранение данных Pod.
Администраторы могут вручную создавать статические PersistentVolumes или генерировать динамические PersistentVolumes на основе классов хранения. Если разработчикам необходимо получить ресурсы хранения для приложений, они могут запросить их через PersistentVolumeClaims (PVC), которые сопоставляются и привязываются к подходящим PersistentVolumes.
Платформа поддерживает управление двумя типами PersistentVolumes, создаваемыми администраторами: динамическими и статическими Persistent Volumes.
Динамические Persistent Volumes: Реализуются на основе классов хранения. Классы хранения создаются администраторами и представляют собой ресурс Kubernetes, описывающий категорию ресурсов хранения. Как только разработчик создаёт PersistentVolumeClaim, связанный с классом хранения, платформа динамически создаёт подходящий PersistentVolume в соответствии с параметрами, настроенными в PersistentVolumeClaim и классе хранения, и связывает его с PersistentVolumeClaim для динамического выделения ресурсов хранения.
Статические Persistent Volumes: Persistent Volumes, созданные вручную администратором. В настоящее время поддерживается создание статических Persistent Volumes типа HostPath или NFS shared storage. Когда разработчики создают PersistentVolumeClaim без использования класса хранения, платформа сопоставляет и связывает подходящий статический PersistentVolume в соответствии с параметрами, настроенными в PersistentVolumeClaim.
HostPath: Использует файловый каталог на хосте узла (локальное хранилище не поддерживается) в качестве бэкенд-хранилища, например: /etc/kubernetes
. Обычно применяется только в тестовых сценариях внутри кластера с одним вычислительным узлом.
NFS Shared Storage: Относится к Network File System — распространённому типу бэкенд-хранилища для Persistent Volumes. Пользователи и программы могут обращаться к файлам на удалённых системах так, как если бы они были локальными.
Provisioning (создание): Администраторы вручную создают статические Persistent Volumes. После создания Persistent Volume переходит в состояние Available; альтернативно, платформа динамически создаёт подходящие Persistent Volumes на основе PersistentVolumeClaims, связанных с классами хранения.
Binding (привязка): Как только статический Persistent Volume сопоставлен и привязан к PersistentVolumeClaim, он переходит в состояние Bound; динамические Persistent Volumes создаются динамически на основе запросов, соответствующих PersistentVolumeClaims, и также переходят в состояние Bound после успешного создания.
Using (использование): Разработчики связывают PersistentVolumeClaims с экземплярами контейнеров вычислительных компонентов, используя ресурсы бэкенд-хранилища, отображённые Persistent Volumes.
Releasing (освобождение): После удаления PersistentVolumeClaim разработчиками Persistent Volume освобождается.
Reclaiming (восстановление): После освобождения Persistent Volume выполняются операции восстановления в соответствии с параметрами политики восстановления Persistent Volume или класса хранения.