我最近开始探索Kubernetes,并决定尝试将kafka部署到k8s。但是,我在创建持久卷时遇到了一个问题。我创建了一个存储类和一个持久卷,但持久卷声明保持挂起状态,并表示"没有匹配的卷插件"。这是我使用的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
正如MaggieO所说,将ReadWriteMany更改为ReadWriteOnce是问题的一部分。另一部分是,我必须手动在C:驱动器上创建/mnt/disks/ssd1文件夹,然后写"path:/C/mnt/disks/ssd1"。在我的例子中没有出现的一件事,但我无论如何都在尝试做,并且可能对其他人有所帮助,那就是我试图为一个PV使用两个PVC,这是不可能的。PV与PVC的关系为1比1。
您的持久卷声明配置文件应该如下所示:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: zookeeper-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: local-storage
只需将访问模式从ReadWriteMany更改为Read WriteOnce即可。
如果有帮助,请告诉我。
您必须将持久卷声明与持久卷绑定。正如您提到的pvc存储类名称:本地存储。用as storageclassName:kafka-pv试试,这样你的pvc就可以绑定到pv了。
在我的情况下,这是由光伏存储引起的,只需增加光伏存储的安装大小即可。
根据我们的经验(在一个名为Openshift 3.11的安全强化Kubernetes分发版下(,当由于节点的PV用完而无法创建PVC时,这种配置错误最常发生。
因此,集群管理员需要添加一些PV和/或我们需要释放一些其他PVC(未使用但仍绑定到PV(。
请求不正确的PVC容量是另一个可能的原因(当集群配置不好并且只接受单个"幻数"作为容量时(。