【问题标题】:How to persist data in mongodb deployed on kubernetes如何在 Kubernetes 上部署的 mongodb 中持久化数据
【发布时间】:2021-09-02 22:00:14
【问题描述】:

我已经在 kubernetes 上部署了 mongodb pod,并且能够连接和插入数据库中的数据。但是当吊舱重新启动时,我的所有数据都将丢失。我也为 mongodb 创建了 persistentvolume,但数据仍然丢失。下面是我的yamls。有人可以请有人解释我在这里做错了什么。

Statefulset.yaml

---
  apiVersion: "apps/v1"
  kind: "StatefulSet"
  metadata:
     name: "mongo-development"
     namespace: "development"
  spec:
    serviceName: "mongo-development"
    replicas: 1
    selector:
      matchLabels:
        app: "mongo-development"
    template:
      metadata:
        labels:
           app: "mongo-development"
      spec:
        containers:
          -
            name: "mongo-development"
            image: "mongo"
            imagePullPolicy: "Always"
            env:
             -
                name: "MONGO_INITDB_ROOT_USERNAME"
                value: "xxxx"

             -
                name: "MONGO_INITDB_ROOT_PASSWORD"
                value: "xxxx"

            ports:
              -
                containerPort: 27017
                name: "mongodb"

            volumeMounts: 
              - 
                name: "mongodb-persistent-storage"
                mountPath: "/var/lib/mongodb"
        volumes: 
          - 
            name: "mongodb-persistent-storage"
            persistentVolumeClaim: 
              claimName: "mongodb-pvc-development"

pvc.yaml

---
  apiVersion: "v1"
  kind: "PersistentVolumeClaim"
  metadata: 
    name: "mongodb-pvc-development"
    namespace: "development"
    labels: 
      app: "mongo-development"
  spec: 
    accessModes: 
      - ReadWriteOnce
    resources: 
      requests: 
        storage: 5Gi
    storageClassName: gp2

pv.yaml

---
apiVersion: "v1"
kind: "PersistentVolume"
metadata:
 name: "mongo-pv-development"
 namespace: "development"
 labels:
  type: local
  app: "mongo-development"
spec:
  storageClassName: "local-storage"
  capacity:
     storage: 5Gi
  accessModes:
     - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  claimRef:
     namespace: "development"
     name: "mongodb-pvc-development"
  nfs:
     path: /mnt
     server: xxxx

service.yaml

---
  apiVersion: "v1"
  kind: "Service"
  metadata: 
    name: "mongo-development"
    namespace: "development"
    labels: 
      app: "mongo-development"
  spec: 
    ports: 
      - 
        name: "mongodb"
        port: 27017
        targetPort: 27017
    clusterIP: "None"
    selector: 
      app: "mongo-development"

【问题讨论】:

  • 您能否提供更多详细信息?:您是如何安装和配置 nfs 的,kubectl get sc,pv,pvc 的输出,kubectl describe pod 查找事件。你引用了不同的storageClassNames f.e. gp2 and local-storage
  • 嗨@Mark 问题已解决,这是由于我在 statefulsets 中定义的不正确的安装路径。

标签: mongodb kubernetes statefulset


【解决方案1】:

问题已解决,我定义的挂载路径不正确,它应该是 statefulset.yaml 文件中的 /data/db

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2019-12-28
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2023-01-19
    相关资源
    最近更新 更多