Kubernetes PVC 数据持久化

Kubernetes PVC data persistent

我在 GKE 上有一个简单的 kubernetes 集群设置。为了保留我的 Express 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

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

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

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

是的,回收设置是可能的。请参考这个documentation

如果即使 PVC 可以删除也希望保留数据,请将回收策略更改为保留。然后即使 PVC 将被删除你的 PV 将被标记为已发布。