You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单节点Minikube中StatefulSet第二个副本Pending问题排查求助

问题原因分析

你遇到的第二个StatefulSet副本Pending的核心原因是静态PV数量不足,且本地存储PV无法被多个PVC复用,具体细节如下:

1. 静态存储供给下PV数量不匹配

你的StorageClass使用kubernetes.io/no-provisioner,属于静态存储供给,Kubernetes不会自动为PVC创建PV,必须手动提前准备足够的PV资源:

  • 你只创建了1个名为mongodb-pv的PV
  • StatefulSet设置了replicas: 2,其volumeClaimTemplates会为每个副本自动创建1个PVC(分别是mongo-data-mongodb-0和mongo-data-mongodb-1)
  • 第一个PVC已经绑定了唯一的PV,第二个PVC找不到可用的PV进行绑定,导致调度失败

2. 本地PV的特性限制

即使你把现有PV的容量调大,也无法解决问题:

  • PV的accessModes是ReadWriteOnce,意味着一个PV只能被单个节点上的单个Pod挂载
  • 本地存储的hostPath是节点上的固定路径,多个Pod挂载同一路径会导致数据冲突,Kubernetes也不允许这种绑定

解决建议

  • 手动创建第二个PV:为第二个副本准备独立的PV,注意修改metadata.name和spec.hostPath.path(比如/data/mongodb-1),保持storageClassName: local-storage,容量满足5Gi请求
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: mongodb-pv-1
      namespace: app
    spec:
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-storage
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: /data/mongodb-1
    
  • 如果你需要动态创建本地PV,可以考虑使用local-path-provisioner替代no-provisioner,它能自动为PVC在节点上创建独立的本地目录

注意:单节点Minikube运行MongoDB副本集本身有风险,因为所有副本都在同一个节点上,无法实现真正的高可用,仅适合测试场景。

内容的提问来源于stack exchange,提问作者psowa001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:57:42