Понимание персистентных томов в Kubernetes
В Kubernetes персистентные тома (Persistent Volumes, PV) являются важной частью для предоставления постоянного хранилища вашим приложениям. PV - это ресурсы хранилища, которые подготовлены администратором кластера или динамически подготовлены с использованием класса хранилища (Storage Class). Они абстрагируют детали конкретной реализации хранилища, позволяя вашим приложениям использовать хранилище без необходимости знать специфические детали системы хранения.
Запросы на персистентные тома (Persistent Volume Claims, PVC) - это запросы на использование хранилища, сделанные пользователями. Когда создается PVC, Kubernetes находит подходящий PV для привязки к этому PVC, обеспечивая тем самым, что приложение имеет необходимые ресурсы хранилища.
graph TD
A[Application] --> B[PVC]
B --> C[PV]
C --> D[Storage]
Для создания персистентного тома вы можете использовать следующую конфигурацию в формате YAML:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/my-pv
В этом примере мы создаем персистентный том с именем my-pv и объемом 5 гигабайт. Поле accessModes указывает, что том может быть смонтирован в режиме ReadWriteOnce, то есть он может быть смонтирован на одном узле в режиме чтения и записи.
Поле hostPath указывает, что хранилище для этого PV предоставляется директорией на локальной файловой системе узла Kubernetes.
После создания PV вы можете создать запрос на персистентный том (PVC) для запроса хранилища из этого PV:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
В этом примере мы создаем PVC с именем my-pvc, который запрашивает 3 гигабайта хранилища с режимом доступа ReadWriteOnce. Затем Kubernetes найдет подходящий PV для привязки к этому PVC, и приложение сможет использовать запрошенное хранилище.
Понимая персистентные тома и запросы на персистентные тома, вы можете обеспечить, чтобы ваши приложения в Kubernetes имели необходимые ресурсы хранилища для сохранения данных, что делает ваши приложения более надежными и масштабируемыми.