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

为何Kubernetes(Skaffold)本地重启时会删除MongoDB持久化数据?

缺失配置及解决方案


1. 未关闭Skaffold默认自动清理逻辑

skaffold dev默认终止时会清理所有它部署的集群资源,包括PVC、Deployment等。如果你使用集群默认动态供应的PV,其默认回收策略为Delete,PVC被删除后PV和对应存储数据会同步销毁。
解决方法二选一:

  • 启动时添加参数:执行 skaffold dev --no-cleanup 命令启动,终止时不会自动清理资源
  • 永久修改skaffold配置:在skaffold.yaml中添加如下配置:
deploy:
  cleanup: false

2. 缺少绑定本地磁盘的静态PV配置

你当前配置中只声明了PVC,没有手动创建绑定本地固定路径的PersistentVolume(PV)资源,默认动态生成的PV属于集群临时存储,不会持久化到本地硬盘,就算PVC未被删除,集群重启后数据也可能丢失。
新增本地PV配置文件如下,替换对应字段为你本地实际配置:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-mongo-pv
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-mongo-sc
  local:
    path: /home/your-user/mongo-data # 替换为你本地要存储数据的目录路径
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube # 替换为你的集群节点主机名,单节点集群直接填节点名即可

同步修改原有PVC配置,指定对应存储类绑定PV:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: database-persistent-volume-claim
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-mongo-sc # 和上面PV的存储类名称保持一致
  resources:
    requests:
      storage: 2Gi

如果你使用Kind集群,需要在创建集群时将本地数据目录挂载到Kind节点内部,否则PV配置的path是节点容器内的路径,集群重启后数据依然会丢失。

内容的提问来源于stack exchange,提问作者Amel Amcë Muminovic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:45:04