我在 GKE 上有一个简单的 kubernetes 集群设置。为了持久保存我的快速 Web 应用程序的数据,我有一个 mongodb 部署、用于 mongodb 部署的群集 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
由于数据存储在超出群集生命周期的持久卷中。
当数据库部署再次启动并运行时,以前的数据不应该保留并变得可用吗?
我想我可能在这里错过了一些东西。
是的,回收设置是可能的。请参阅此文档
如果即使可以删除 PVC,也要保留数据,请将回收策略更改为"保留"。然后,即使PVC也将被删除,您的PV将被标记为已发布。