我的PersistentVolumeClaim不会使用我为它准备的PersistentVolume。
我在PersistentVolume
有这个monitoring-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: monitoring-volume
labels:
usage: monitoring
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/k8data/monitoring
我做完之后
kubectl apply -f monitoring-pv.yaml
我可以检查它与kubectl get pv
存在
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
monitoring-volume 50Gi RWO Retain Available 5m
我在PersistentVolumeClaim
的monitoring-pvc.yaml
看起来像这样:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: monitoring-claim
namespace: monitoring
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
selector:
matchLabels:
usage: monitoring
当我做kubectl apply -f monitoring-pvc.yaml
它被创造了。
我可以用PersistentVolumeClaim
and看看我的新get pvc -n monitoring
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
monitoring-claim Pending manual 31s
当我用PersistentVolume
看我的kubectl get pv
时,我可以看到它仍然可用:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
monitoring-volume 50Gi RWO Retain Available 16m
我原以为PersistentVolume
不是Bound
but。当我使用与此名称相同的'PersistentVolumeClaim'时,会创建一个用PersistentVolumeClaim
编写的新/tmp
,因此不是很持久。
当我在没有命名空间的情况下为我的PersistentVolumeClaim
执行相同的操作时,一切似乎都有效。
我在Ubuntu 18.04上使用minikube。
我需要更改什么才能将卷与声明连接?
当我回顾我的问题并将其与工作解决方案进行比较时,我注意到我错过了在没有我能够使用的命名空间的示例中设置为storageClassName
的manual
。
我更新的PersistentVolume
now看起来像这样:
apiVersion: v1
kind: PersistentVolume
metadata:
name: monitoring-volume
labels:
usage: monitoring
spec:
storageClassName: manual
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/k8data/monitoring
唯一的区别是
storageClassName: manual
我的初步调查结果是,这是我所犯的愚蠢错误。