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.
3 Réponses :
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
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 /
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 /
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.