Kubernetes 命名空间中的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:

我的PersistentVolumeClaim不会使用我为其准备的PersistentVolume

我在
监控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


问题是关于
名称空间
。这应该是正确的答案。