2

我在 GKE 上有一个简单的 kubernetes 集群设置。为了持久化我的快速 Web 应用程序的数据,我有一个 mongodb 部署、用于 mongodb 部署的 cluster-ip-service 和在集群中运行的持久卷声明。

正在存储用户数据并且一切正常,直到我在 GKE 控制台上删除了 mongodb 部署。当我尝试使用以下命令恢复 mongodb 部署时:

kubectl apply -f mongodb-deployment.yaml

mongodb 部署和 PVC 再次运行,但之前的所有数据都丢失了。

我的 mongodb 部署 yaml 文件:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: database-persistent-volume-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

我的持久卷声明 yaml 文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: mongo
  template:
    metadata:
      labels:
        component: mongo
    spec:
      volumes:
        - name: mongo-storage
          persistentVolumeClaim:
            claimName: database-persistent-volume-claim
      containers:
      - name: mongo
        image: mongo
        ports:
          - containerPort: 27017
        volumeMounts:
          - name: mongo-storage
            mountPath: /var/lib/mongo/data

由于数据存储在集群生命周期之外的持久卷中。

当数据库部署重新启动并运行时,以前的数据不应该保留并变得可用吗?

我想我可能在这里遗漏了一些东西。

4

2 回答 2

4

是的,可以使用回收设置。请参考本文档

于 2019-08-22T19:19:57.750 回答
0

如果您想保留数据,即使 PVC 可以被删除,请将回收策略更改为 RETAIN。然后甚至 PVC 将被删除,您的 PV 将被标记为 RELEASED。

于 2019-08-22T19:22:52.657 回答