创建PVC后Kubernetes Deployment持续处于Pending状态问题求助
问题根因
- PV与PVC标签不匹配
PVC配置中设置了selector.matchLabels: {name: my}的筛选规则,要求绑定的PV必须携带name: my标签,但创建的my-local-pv未配置任何对应标签,PVC无法匹配到符合要求的PV,因此一直处于Pending状态。 - PVC与Pod命名空间不匹配
从Pod描述可知Pod运行在near-rt-ric命名空间下,而PVC默认创建在default命名空间。K8s中PVC属于命名空间级资源,跨命名空间无法直接引用,因此Pod调度时会提示找不到my-claim。 - 存储选型不符合共享诉求
当前使用的Local PV是绑定到特定节点的本地存储,且配置的访问模式为ReadWriteOnce,仅允许单节点读写,完全无法满足多应用跨节点共享存储的需求。
解决方案
修复当前Pod Pending问题
- 给PV添加匹配标签,修改
persistentVolume.yaml的metadata段:
metadata: name: my-local-pv labels: name: my # 新增匹配PVC的标签
重新执行kubectl apply -f persistentVolume.yaml更新PV配置。
2. 在Pod所在命名空间创建PVC:
kubectl apply -f persistentVolumeClaim.yaml -n near-rt-ric
操作完成后PVC会自动绑定PV,Pod即可正常调度到juniper-ric节点启动。
实现多应用共享持久化存储
如果需要所有应用跨节点共享存储,需更换存储方案,停止使用Local PV:
- 单节点集群场景:可改用HostPath类型PV,将访问模式改为
ReadWriteMany,同时配置好存储路径的读写权限 - 多节点集群场景:需部署分布式存储服务,如NFS、Ceph、GlusterFS等,使用对应存储的Provisioner创建StorageClass,PVC直接申请存储即可实现多节点读写共享
内容的提问来源于stack exchange,提问作者Dan Shmirer
相关产品推荐
相关产品推荐

