我正在尝试在运行Amazon AWS EC2实例(Ubuntu 18.04)的kubernetes集群上创建持久卷。我在尝试创建它时从kubectl收到错误。
我已经尝试查找错误,但我没有得到任何令人满意的搜索结果。
这是我正在使用的pv.yaml文件。
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
这是我得到的错误:
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|...
我无法从消息中弄清楚实际的错误是什么。
任何帮助赞赏。
从pv定义中删除存储类。动态配置pv需要存储类。
在您的情况下,您正在使用主机路径卷。它应该没有存储类。
如果您使用的是k8s 1.14,那么请查看本地卷。请参阅以下链接https://kubernetes.io/blog/2018/04/13/local-persistent-volumes-beta/
我不认为这与在path
中引用有关。它更多的是为storageClassName
使用正确的缩进。它应该是这样的:
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
你也可以删除它,它将使用默认的StorageClass