pod имеет несвязанные PersistentVolumeClaims

По какой-то причине, когда я запускаю развертывание, я получаю сообщение об ошибке на своих модулях:

у pod есть несвязанные PersistentVolumeClaims

Вот мой YAML ниже:

Это выполняется локально, а не в любом облачном решении.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.16.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: ckan
  name: ckan
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: ckan
    spec:
      containers:
        image: slckan/docker_ckan
        name: ckan
        ports:
        - containerPort: 5000
        resources: {}
        volumeMounts:
            - name: ckan-home
              mountPath: /usr/lib/ckan/
              subPath: ckan
      volumes:
      - name: ckan-home
        persistentVolumeClaim:
          claimName: ckan-pv-home-claim
      restartPolicy: Always
status: {}

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ckan-pv-home-claim
  labels:
    io.kompose.service: ckan
spec:
  storageClassName: ckan-home-sc
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
  volumeMode: Filesystem
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: ckan-home-sc
provisioner: kubernetes.io/no-provisioner
mountOptions:
  - dir_mode=0755
  - file_mode=0755
  - uid=1000
  - gid=1000

Ответ 1

Вы должны определить PersistentVolume, предоставляющий дисковое пространство, которое будет использоваться PersistentVolumeClaim.

При использовании storageClass Kubernetes включите "Dynamic Volume Provisioning", который не работает с локальной файловой системой.


Чтобы решить вашу проблему:

  • Предоставьте PersistentVolume, удовлетворяющий ограничениям заявки (размер> = 100Mi)
  • Удалите storageClass -line из PersistentVolumeClaim
  • Удалить StorageClass из вашего кластера

Как эти пьесы играют вместе?

При создании описания состояния развертывания обычно известно, какой тип (объем, скорость,...) хранилища понадобится приложению.
Чтобы сделать развертывание универсальным, вы бы хотели избежать жесткой зависимости от хранилища. Объем-абстракция Kubernetes позволяет вам предоставлять и использовать хранилище стандартным способом.

PersistentVolumeClaim используется для предоставления ограничения хранилища наряду с развертыванием приложения.

PersistentVolume предлагает экземпляры томов всего кластера, готовые к использованию (" bound ") - PersistentVolume будет привязан к одному утверждению. Но поскольку несколько экземпляров этого утверждения могут быть запущены на нескольких узлах, доступ к этому объему может осуществляться несколькими узлами.

PersistentVolume без StorageClass считается статическим.

"Динамическое предоставление томов" вместе с StorageClass позволяет кластеру предоставлять PersistentVolumes по требованию. Для того чтобы эта работа работала, данный поставщик хранилища должен поддерживать инициализацию - тогда он позволит кластеру запрашивать инициализацию "нового" PersistentVolume при появлении неудовлетворенного PersistentVolumeClaim.