代码之家  ›  专栏  ›  技术社区  ›  Thomas Sundberg

命名空间中的PersistentVolumeClaim未连接到PersistentVolume

  •  0
  • Thomas Sundberg  · 技术社区  · 6 年前

    我的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

    我可以看看我的新衣服 持久卷声明 具有 get pvc -n monitoring

    NAME                           STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    monitoring-claim               Pending                                                                        manual         31s
    

    当我看着我的 kubectl获得pv 我可以看到它仍然可用:

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS        CLAIM                                     STORAGECLASS   REASON    AGE
    monitoring-volume                          50Gi       RWO            Retain           Available                                                                        16m
    

    持久卷 成为 Bound 但事实并非如此。当我使用与此同名的PersistentVolumeClaim时,一个新的 持久卷声明 是用 /tmp 因此不是很执着。

    当我在没有命名空间的情况下执行相同的操作时 持久卷声明 一切似乎都正常。

    我在Ubuntu 18.04的minikube上。

    我需要更改什么才能将卷与声明连接起来?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Thomas Sundberg    6 年前

    当我回顾我的问题并将其与一个有效的解决方案进行比较时,我注意到我错过了 storageClassName 设定为 manual 在一个没有名称空间的例子中,我可以使用。

    PersistentVolume 现在看起来像这样:

    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
    

    我的初步调查结果是,这是我犯的愚蠢的错误。

        2
  •  0
  •   Suresh    4 年前

    持久卷和卷声明应位于同一命名空间中。您需要添加名称空间:monitoring。现在您可以尝试下面的代码

    监测-pv.yml公司

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: monitoring-volume
      labels:
        usage: monitoring
      namespace: monitoring 
    spec:
      capacity:
        storage: 50Gi
      accessModes:
      - ReadWriteOnce
      hostPath:
        path: /data/k8data/monitoring
    

    对于持久卷声明

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: monitoring-claim
      namespace: monitoring
    spec:
      storageClassName: manual
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 50Gi
      selector:
        matchLabels:
          usage: monitoring