PersistentVolume недействителен: spec: Требуемое значение: необходимо указать тип тома
Я пытаюсь создать постоянный том поверх / на основе существующего имени класса хранилища. Затем я хочу прикрепить к нему ПВХ; так что они связаны. Выполнение приведенного ниже кода даст мне "sftp-pv-Claim", который я хочу, но он не привязан к моему PV ("sftp-pv-storage"). Его статус "ожидает рассмотрения".
Я получаю следующее сообщение об ошибке: "PersistentVolume "sftp-pv-storage"недействителен: spec: Required value: must specify a volume type". Если кто-нибудь может указать мне в правильном направлении, почему я получаю сообщение об ошибке, я был бы очень признателен.
Технические характеристики:
Я создаю PV и PVC, используя диаграмму управления.
Я использую пользовательский интерфейс Rancher, чтобы узнать, привязаны ли они или нет, и создается ли PV.
Я использую хранилище Ceph с Rook (для обеспечения динамической подготовки PV).
Ошибка:
Я получаю следующее сообщение об ошибке: "PersistentVolume "sftp-pv-storage"недействителен: spec: Required value: must specify a volume type".
Попытки:
Я безрезультатно пытался использовать applyRef и matchLabels.
Я добавил "volumetype: none" к своим PV спецификациям.
Если я добавлю "hostPath: path: "/mnt/data"" в качестве спецификации к PV, он будет отображаться как Доступный PV (с путем локального узла), но мой PVC не привязан к нему. (Кроме того, в целях развертывания я не хочу использовать hostPath.
## Create Persistent Storage for SFTP
## Ref: https://www.cloudtechnologyexperts.com/kubernetes-persistent-volume-with-rook/
kind: PersistentVolume
apiVersion: v1
metadata:
name: sftp-pv-storage
labels:
type: local
name: sftp-pv-storage
spec:
storageClassName: rook-ceph-block
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
allowVolumeExpansion: true
volumetype: none
---
## Create Claim (links user to PV)
## ==> If pod is created, need to automatically create PVC for user (without their input)
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: sftp-pv-claim
spec:
storageClassName: sftp-pv-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
2 ответа
PersistentVolume "sftp-pv-storage" недействителен: spec: Requiredvalue: должен указывать тип тома.
В манифесте PV вы должны указать тип тома. Список всех поддерживаемых типов описан здесь. Как вы используетеCeph
Я полагаю, вы будете использовать CephFS
.
Том cephfs позволяет монтировать существующий том CephFS в ваш Pod. В отличие от emptyDir, который стирается при удалении Pod, содержимое тома cephfs сохраняется, а том просто размонтируется. Это означает, что том CephFS может быть предварительно заполнен данными, и эти данные могут быть "отключены" между модулями. CephFS может быть смонтирован несколькими авторами одновременно.
Пример CephFS
вы можете найти в Github.
Если я добавлю "hostPath: path: "/mnt/data"" в качестве спецификации к PV, он будет отображаться как Доступный PV (с путем локального узла), но мой PVC не привязан к нему.
Если вы посмотрите официальную документацию Kubernetes оstorageClassName
.
Утверждение может запросить конкретный класс, указав имя StorageClass с помощью атрибута storageClassName. Только PV запрошенного класса, имеющие то же имя storageClassName, что и PVC, могут быть привязаны к PVC.
storageClassName
вашей PV
а также PVC
разные.
PV:
spec:
storageClassName: rook-ceph-block
ПВХ:
spec:
storageClassName: sftp-pv-storage
Надеюсь, это поможет.
Попробуйте эту спецификацию для заявки на постоянный том -
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: sftp-pv-claim
spec:
storageClassName: sftp-pv-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
volumeName: sftp-pv-storage
Я только что добавил туда имя тома, думаю, это приведет к его привязке. Если это даже не сработает, попробуйте добавить соответствующий volumeMode в эту спецификацию.
You did not specify the "hostPath:" in your PersistentVolume Add it and the error should be resolved. See sample below