Kubernetes 命名空间中的PersistentVolumeClaim未连接到PersistentVolume
我的PersistentVolumeClaim不会使用我为其准备的PersistentVolume 我在Kubernetes 命名空间中的PersistentVolumeClaim未连接到PersistentVolume,kubernetes,Kubernetes,我的PersistentVolumeClaim不会使用我为其准备的PersistentVolume 我在监控pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: monitoring-volume labels: usage: monitoring spec: capacity: storage: 50Gi accessModes: - ReadWriteOnce hostPath:
监控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
我的monitoring pvc.yaml
中的PersistentVolumeClaim
如下所示:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: monitoring-claim
namespace: monitoring
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
selector:
matchLabels:
usage: monitoring
apiVersion: v1
kind: PersistentVolume
metadata:
name: monitoring-volume
labels:
usage: monitoring
spec:
storageClassName: manual
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/k8data/monitoring
当我执行kubectl apply-f monitoring pvc.yaml时,就会创建它
我可以通过获取pvc-n监控查看我的新PersistentVolumeClaim
,我看到了
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
monitoring-claim Pending manual 31s
当我用kubectl get pv
查看我的PersistentVolume
时,我可以看到它仍然可用:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
monitoring-volume 50Gi RWO Retain Available 16m
我原以为PersistentVolume
是绑定的
,但事实并非如此。当我使用与此同名的“PersistentVolumeClaim”时,会创建一个新的PersistentVolumeClaim
,它是用/tmp
编写的,因此不是非常持久的
当我在没有为我的PersistentVolumeClaim
创建名称空间的情况下执行相同的操作时,一切似乎都正常
我在Ubuntu18.04上的minikube上
要将卷与声明连接起来,我需要做哪些更改?当我回顾我的问题并将其与一个可行的解决方案进行比较时,我注意到在一个没有我能够使用的名称空间的示例中,我遗漏了设置为manual
的storageClassName
我更新的PersistentVolume
现在看起来如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: monitoring-claim
namespace: monitoring
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
selector:
matchLabels:
usage: monitoring
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
我的初步发现是,这是我犯的愚蠢错误。持久卷和卷声明应该在同一名称空间中。您需要添加名称空间:监视。现在您可以尝试下面的代码
对于持久卷
监控pv.yml
对于持久性批量索赔
监控pvc.yml
问题是关于名称空间。这应该是正确的答案。