使用K8S集群运行MongoDB7.0
参考:
https://hub.docker.com/_/mongo
- 创建PVC
创建PVC用于数据持久化
# cat mongodb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodb-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 22Gi
storageClassName: gluster-heketi-storageclass
创建pvc
# kubectl apply -f mongodb-pvc.yaml
查看创建的PVC
# kubectl get pvc mongodb-pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mongodb-pvc Bound pvc-429a856d-ebdf-11ee-b17f-525400e71cb5 22Gi RWO gluster-heketi-storageclass 31m
- 创建Deployment
# cat mongodb-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mongodb
name: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mongodb
spec:
containers:
- image: mongo:7.0
name: mongo
ports:
- containerPort: 27017
protocol: TCP
env:
- name: MONGO_INITDB_ROOT_USERNAME
value: "root"
- name: MONGO_INITDB_ROOT_PASSWORD
value: "password"
volumeMounts:
- mountPath: /data/db
name: mongodb-pvc
volumes:
- name: mongodb-pvc
persistentVolumeClaim:
claimName: mongodb-pvc
注意添加以下环境变量用于鉴权,该变量名参考hub.docker.com得到
env:
- name: MONGO_INITDB_ROOT_USERNAME
value: "root"
- name: MONGO_INITDB_ROOT_PASSWORD
value: "qwer1234"
创建Deployment
# kubectl apply -f mongodb-deployment.yaml
- 创建Service
把NodePort端口固定
# cat mongodb-servive.yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: mongodb
name: mongodb
spec:
ports:
- port: 27017
protocol: TCP
targetPort: 27017
nodePort: 47017
selector:
app: mongodb
type: NodePort
status:
loadBalancer: {}
- 使用NodeIP+端口访问
下载MongoDB客户端
下载地址
https://downloads.mongodb.com/compass/mongodb-compass-1.42.3-win32-x64.exe
使用用户名和密码连接
2025-01-26补充开始
可能是意外断电或重启导致无法启动
Pod报错信息如下
# ailed to start up WiredTiger under any compatibility version. This may be due to an unsupported upgrade or downgrade
修复方法,使用repair修复
创建一个Job指定PVC启动一次修复
apiVersion: batch/v1
kind: Job
metadata:
name: mongodb-repair-job
spec:
template:
spec:
containers:
- name: mongodb
image: mongo:7.0 # 替换为你的 MongoDB 镜像版本
command: ["mongod"]
args: ["--dbpath", "/data/db", "--repair"] # 指定 --repair 参数
volumeMounts:
- name: mongo-data
mountPath: /data/db
volumes:
- name: mongo-data
persistentVolumeClaim:
claimName: mongodb-pvc # 替换为你的 PersistentVolumeClaim 名称
restartPolicy: Never
backoffLimit: 0 # 确保 Job 在失败后不会重试
执行一次修复,然后重启mongodb的Pod即可
# 执行修复
# kubectl apply -f job-deployment.yaml
# 重启Pod
# kubectl delete pod mongodb-6f9469ccb-rvw28
2025-01-26补充结束
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2019-03-27 ELK之使用metricbeat收集系统数据及其他程序并生成可视化图表
2018-03-27 SaltStack概述及安装
2018-03-27 Zabbix高可用