【发布时间】:2020-04-17 17:21:25
【问题描述】:
我正在尝试在 k8s 世界中配置 mongodb 部署。 我的 mongo 部署文件如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: panel-admin-mongo-deployment
spec:
replicas: 1
selector:
matchLabels:
component: panel-admin-mongo
template:
metadata:
labels:
component: panel-admin-mongo
spec:
volumes:
- name: panel-admin-mongo-storage
persistentVolumeClaim:
claimName: database-persistent-volume-claim
containers:
- name: panel-admin-mongo
image: mongo
ports:
- containerPort: 27017
volumeMounts:
- name: panel-admin-mongo-storage
mountPath: /data/db
Mongo 服务文件:
apiVersion: v1
kind: Service
metadata:
name: panel-admin-mongo-cluster-ip-service
spec:
type: ClusterIP
selector:
component: panel-admin-mongo
ports:
- port: 27017
targetPort: 27017
还有我的持久音量声明:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: database-persistent-volume-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
当我使用以下方法进入 mongodb 容器时:
kubectl exec -it panel-admin-mongo-deployment-6dcfc5b8c7-mk8d5 sh
我在集合中保存了一些用户的电子邮件和密码(例如用户),一切正常。但是当我击落其中的 pod 和容器时,再次启动,数据就消失了。不应该独立于 pod 的生命周期吗?如果是,我错过了什么?
【问题讨论】:
-
我已经在 Minikube 和 GKE 上复制了您的 yaml 文件,它按预期工作。您能否添加有关如何重现此问题的信息?您如何将这些数据注入数据库?
-
据我了解,您可以删除 mongo 部署文件并再次启动它,数据会在那里吗?我将使用
kubectl exec -it [pod-name] sh、mongo、use [mydbname]和 f.ex 注入进入 pod 的数据。db.users.save({ email: "test@test.com" }) -
是的,对我来说它工作正常。我正在部署你的
PersistentVolumeClaim,而不是你的Deployment。我没有更改任何内容,复制并粘贴。
标签: mongodb docker kubernetes