2
votes

Obtention d'une erreur lors de la tentative de création d'un volume persistant

J'essaie de créer un volume persistant sur mon cluster kubernetes s'exécutant sur une instance Amazon AWS EC2 (Ubuntu 18.04). J'obtiens une erreur de kubectl en essayant de le créer.

J'ai essayé de rechercher l'erreur, mais je n'obtiens aucun résultat de recherche satisfaisant.

Voici le fichier pv.yaml que j'utilise.

Error from server (BadRequest): error when creating "./mysql-pv.yaml": 

PersistentVolume in version "v1" cannot be handled as a 
PersistentVolume: v1.PersistentVolume.Spec: 
v1.PersistentVolumeSpec.PersistentVolumeSource: HostPath: Capacity: 
unmarshalerDecoder: quantities must match the regular expression 
'^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$', error found in #10 byte
of ...|":"manual"},"hostPat|..., bigger context ...|city":
{"storage":"1Gi","storageClassName":"manual"},"hostPath":
{"path":"/home/ubuntu/data/pv001"},"p|...

Voici l'erreur que j'obtiens:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv001
  labels:
    type: local
spec:
  capacity:
    storage: 1Gi
    storageClassName: manual
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: /home/ubuntu/data/pv001

Je ne parviens pas à comprendre à partir du message quelle est l'erreur réelle .

Toute aide appréciée.


1 commentaires

Salut, ignorez cette demande. J'ai résolu le problème. Je crois que c'est que je n'avais pas de guillemets autour du nom du chemin et que je ne mettais pas la directive API Version en premier.


3 Réponses :


0
votes

Je ne pense pas que cela soit lié au fait d'avoir des guillemets dans le chemin . Il s'agit davantage d'utiliser la bonne indentation pour storageClassName . Cela devrait être celui-ci à la place:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv001
  labels:
    type: local
spec:
  capacity:
    storage: 1Gi
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: /home/ubuntu/data/pv001

Vous pouvez également le supprimer, et il utilisera la StorageClass

par défaut


0 commentaires

1
votes

supprimer la classe de stockage de la définition pv. la classe de stockage est nécessaire pour l'approvisionnement dynamique des pv.

dans votre cas, vous utilisez des volumes de chemin d'hôte. cela devrait fonctionner sans classe de stockage.

Si vous utilisez k8s 1.14, regardez les volumes locaux. reportez-vous au lien ci-dessous https://kubernetes.io/blog/2018/04 / 13 / local-persistent-volumes-beta /


0 commentaires

0
votes

Essayez ceci:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv001
  labels:
    type: local
spec:
  capacity:
    storage: 1Gi
  storageClassName: manual
 accessModes: ["ReadWriteOnce"]
 persistentVolumeReclaimPolicy: Recycle
 hostPath:
   path: /home/ubuntu/data/pv001

storageClassName est sous spec et au même niveau que capacité (vous mettez storageClassName sous capacity ce qui est faux). En savoir plus: https://kubernetes.io/docs/concepts/storage/persistent- volumes /


0 commentaires