Persistent Volume

PersistentVolume (PV) представляет собой объект Kubernetes API, отображающий связь с томами бэкенд-хранилища в кластере Kubernetes. Это ресурс кластера, который создаётся и настраивается администраторами единообразно, отвечая за абстрагирование реальных ресурсов хранения и формирование инфраструктуры хранения кластера.

PersistentVolumes имеют жизненный цикл, независимый от Pod'ов, что позволяет обеспечивать постоянное хранение данных Pod'ов.

Администраторы могут вручную создавать статические PersistentVolumes или генерировать динамические PersistentVolumes на основе классов хранения. Если разработчикам необходимо получить ресурсы хранения для приложений, они могут запросить их через PersistentVolumeClaims (PVC), которые сопоставляются и связываются с подходящими PersistentVolumes.

Содержание

Динамические Persistent Volumes и статические Persistent Volumes

Платформа поддерживает управление двумя типами 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. Пользователи и программы могут обращаться к файлам на удалённых системах так, как если бы они были локальными.

Жизненный цикл Persistent Volumes

  1. Provisioning (создание): Администраторы вручную создают статические Persistent Volumes. После создания Persistent Volume переходит в состояние Available; альтернативно, платформа динамически создаёт подходящие Persistent Volumes на основе PersistentVolumeClaims, связанных с классами хранения.

  2. Binding (связывание): После того как статический Persistent Volume сопоставлен и связан с PersistentVolumeClaim, он переходит в состояние Bound; динамические Persistent Volumes создаются динамически на основе запросов, соответствующих PersistentVolumeClaims, и также переходят в состояние Bound после успешного создания.

  3. Using (использование): Разработчики связывают PersistentVolumeClaims с экземплярами контейнеров вычислительных компонентов, используя ресурсы бэкенд-хранилища, отображённые Persistent Volumes.

  4. Releasing (освобождение): После удаления разработчиками PersistentVolumeClaim Persistent Volume освобождается.

  5. Reclaiming (восстановление): После освобождения Persistent Volume на нём выполняются операции восстановления в соответствии с параметрами политики восстановления Persistent Volume или класса хранения.