本地 PersistentVolumeClaim 说 "no volume plugin matched"

Local PersistentVolumeClaim says "no volume plugin matched"

我最近开始探索 Kubernetes,并决定尝试将 kafka 部署到 k8s。但是我在创建持久卷时遇到问题。我创建了一个存储 class 和一个持久卷,但持久卷声明处于待定状态 "no volume plugin matched"。这是我使用的 yaml 文件,虚线表示新文件。有人知道为什么会这样吗?

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

------------------------

apiVersion: v1
kind: PersistentVolume
metadata:
  name: kafka-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /mnt/disks/ssd1
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - docker-desktop


---------------------------

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: zookeeper-pvc
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  storageClassName: local-storage

您必须将持久卷声明与您的持久卷绑定。 正如您提到的 pvc storageclassName: local-storage。 尝试使用 as storageclassName: kafka-pv 这样你的 pvc 就可以绑定到 pv.

您的 Persistent Volume Claim 配置文件应如下所示:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: zookeeper-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: local-storage

只需将 access modeReadWriteMany 更改为 ReadWriteOnce.

如果有帮助请告诉我。

正如 MaggieO 所说,将 ReadWriteMany 更改为 ReadWriteOnce 是问题的一部分。另一部分是我必须在我的 C: 驱动器上手动创建 /mnt/disks/ssd1 文件夹,然后改为写入 "path: /c/mnt/disks/ssd1"。我的示例中没有出现,但无论如何我都在尝试做并且可能对其他人有帮助的事情是我试图为一个 PV 使用两个 PVC,这是不可能的。 PV 和 PVC 的关系是 1 对 1。

在我的情况下,它是由pv存储引起的,只需增加pv存储的安装大小即可。

根据我们的经验(在名为 Openshift 3.11 的 security-hardened Kubernetes 发行版下),当由于节点有 运行 个 PV 而无法创建 PVC 时,这种配置错误最常发生。

因此集群管理员需要添加一些 PV and/or 我们需要释放一些其他 PVC(未使用但仍绑定到 PV)。

请求的 PVC 容量不正确是另一个可能的原因(当集群配置不当并且只接受单个“幻数”容量时)。