web-dev-qa-db-fra.com

pod a non lié PersistentVolumeClaims

Lorsque j'appuie mes déploiements, pour une raison quelconque, le message d'erreur s'affiche sur mes pods:

pod a non lié PersistentVolumeClaims

Voici mon YAML ci-dessous:

Ceci s'exécute localement, pas sur une solution cloud.

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
31
soniccool

Vous devez définir un PersistentVolume fournissant l’espace disque que le PersistentVolumeClaim ).

Lorsque vous utilisez storageClass, Kubernetes va activer le "provisionnement dynamique du volume" qui ne fonctionne pas avec le système de fichiers local.


Pour résoudre votre problème:

  • Fournissez un PersistentVolume respectant les contraintes de la revendication (taille> = 100Mi).
  • Supprimez la ligne storageClass- de la PersistentVolumeClaim
  • Supprimez le StorageClass de votre cluster.

Comment ces pièces jouent-elles ensemble?

Lors de la création de la description d'état de déploiement, le type (mémoire, vitesse, ...) de stockage dont l'application aura besoin est généralement connu.
Pour rendre un déploiement polyvalent, vous souhaitez éviter une dépendance importante au stockage. L'abstraction de volume Kubernetes vous permet de fournir et d'utiliser le stockage de manière standardisée.

Le PersistentVolumeClaim est utilisé pour fournir une contrainte de stockage parallèlement au déploiement d'une application.

Le PersistentVolume offre des instances de volume à l'échelle du cluster prêtes à être consommées ("bound"). Un volume persistant sera lié à une revendication. Mais puisque plusieurs instances de cette revendication peuvent être exécutées sur plusieurs nœuds, ce volume peut être accédé par plusieurs nœuds.

Un volume PersistentVolume sans StorageClass est considéré comme étant statique .

"Provisioning dynamique de volume" aux côtés avec a StorageClass permet au cluster de provisionner PersistentVolumes à la demande. Pour que cela fonctionne, le fournisseur de stockage donné doit prendre en charge provisioning - ceci permet au cluster de demander la fourniture d'un "nouveau" PersistentVolume quand un insatisfait PersistentVolumeClaim apparaît.

41
Florian Breisch