Значение PersistentVolume недопустимо: spec: Обязательное значение: необходимо указать тип тома. - PullRequest
1 голос
/ 03 октября 2019

Я пытаюсь создать постоянный том поверх или на основе существующего имени класса хранилища. Затем я хочу прикрепить к нему ПВХ;так что они связаны. Выполнение приведенного ниже кода даст мне «sftp-pv-претензию», которую я хочу, но она не привязана к моему PV («sftp-pv-storage»). Его статус "в ожидании".

Я получаю сообщение об ошибке: "PersistentVolume" sftp-pv-storage "недопустимо: spec: Обязательное значение: необходимо указать тип тома". Если кто-то может указать мне правильное направление относительно того, почему я получаю сообщение об ошибке, это будет очень цениться.

Характеристики:

Ясоздание PV и PVC с использованием рулевой диаграммы.

Я использую Rancher UI, чтобы увидеть, связаны ли они или нет, и генерируется ли PV.

Хранилище, которое я используюэто Ceph с Rook (для обеспечения динамической инициализации PV).

Ошибка:

Полученное сообщение об ошибке: "PersistentVolume" sftp-pv-storage"недопустимо: spec: Обязательное значение: необходимо указать тип тома".

Попытки:

Я пытался с помощью ClaueryRef и 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 ]

0 голосов
/ 09 октября 2019

Недопустимый параметр PersistentVolume "sftp-pv-storage": spec: Requiredvalue: должен указывать тип тома.

В манифесте PV необходимо указать тип тома. Список всех поддерживаемых типов описан здесь . Поскольку вы используете Ceph Я предполагаю, что вы будете использовать CephFS.

Том cephfs позволяет монтировать существующий том CephFS в ваш Pod. В отличие от emptyDir, который стирается при удалении Pod, содержимое тома cephfs сохраняется, а том просто отключается. Это означает, что том CephFS может быть предварительно заполнен данными, и эти данные могут быть «переданы» между модулями. CephFS может быть смонтирован несколькими писателями одновременно.

Пример CephFS вы можете найти в Github .

Если я добавлю "hostPath:путь: "/ mnt / data" "как спецификация для PV, он будет отображаться как доступный PV (с путем локального узла), но мой PVC не связан с ним.

Если вы проверите Официальные документы Kubernetes о storageClassName.

Заявка может запросить определенный класс, указав имя StorageClass с помощью атрибута storageClassName. Только PV запрошенного класса, с тем же StorageClassName, что и PVC, могут быть связаны с PVC.

storageClassName ваших PV и PVC отличаются.

PV:

spec:
  storageClassName: rook-ceph-block

PVC:

spec:
  storageClassName: sftp-pv-storage

Надеюсь, это поможет.

0 голосов
/ 04 октября 2019

Попробуйте эту спецификацию для своей заявки на постоянный том -

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 в эту спецификацию

...