为什么我的持久卷声明处于待处理状态?

Why is my persistent volume claim pending?

我现在已经 60 分钟了,我的持久卷声明仍在等待中。

我的存储空间class:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

Minikube没有提供这个,我不得不用上面的yaml添加它。在仪表板中,我可以单击它,它引用 green/ok.

的持久卷

我的持久卷(绿色,ok):

apiVersion: v1
kind: PersistentVolume
metadata:
  name: small-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube

我需要持久存储的原因是 nodered 将其数据存储在 /data 中,以便我在这里尝试做什么;为它提供持久卷来存储数据。由于这是在本地使用 minikube,我可以利用 minikube 实例上的 /data 文件夹,每个文档都是持久的。

我的节点化应用程序的持久卷声明。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nodered-claim
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

无论我是否添加部署,持久存储声明仍然在仪表板中 yellow/pending。有什么理由吗?我在这里错过了什么?

更新:

kubectl 描述 pvc/nodered-claim:

Type    Reason                Age                    From                         Message
  ----    ------                ----                   ----                         -------
  Normal  WaitForFirstConsumer  2m52s (x162 over 42m)  persistentvolume-controller  waiting for first consumer to be created before binding

将您的 StorageClass 更新为即时:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: Immediate  # <-- bind as soon as PVC is created

WaitForFirstConsumer 仅当 Pod 使用您的 PVC 时才会绑定。

...If I add the deployment or not, the persistent storage claim is still yellow/pending in the dashboard.

如果它需要的 PVC 无法绑定,您的部署也会进入挂起状态。