K8s集群Mongo-Express Pod启动异常 配置useUnifiedTopology仍无效
K8s中Mongo-Express Pod启动时MongoDB驱动警告的解决办法
在K8s集群启动Mongo-Express Pod时,出现以下MongoDB驱动警告:
[MONGODB DRIVER] Warning: Current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option 'useUnifiedTopology: true' to the MongoClient constructor.
尝试多种方案后警告仍未消除,以下是相关配置文件:
ConfigMap配置(configMap.yaml)
apiVersion: v1 kind: ConfigMap metadata: name: mongodb-configmap data: database_url: mongodb-service options: '{"useUnifiedTopology":true}'
MongoDB部署及服务配置(mongo.yaml)
apiVersion: apps/v1 kind: Deployment metadata: name: mongodb-deployment labels: app: mongodb spec: replicas: 1 selector: matchLabels: app: mongodb template: metadata: labels: app: mongodb spec: containers: - name: mongodb image: mongo ports: - containerPort: 27017 env: - name: MONGO_INITDB_ROOT_USERNAME valueFrom: secretKeyRef: name: mongodb-secret key: mongo-root-username - name: MONGO_INITDB_ROOT_PASSWORD valueFrom: secretKeyRef: name: mongodb-secret key: mongo-root-password --- apiVersion: v1 kind: Service metadata: name: mongodb-service labels: app: mongodb spec: selector: app: mongodb ports: - protocol: TCP port: 27017
Mongo-Express部署配置(mongo-express.yaml)
apiVersion: apps/v1 kind: Deployment metadata: name: mongo-express-deployment spec: replicas: 1 selector: matchLabels: app: mongo-express template: metadata: labels: app: mongo-express spec: containers: - name: mongo-express image: mongo-express env: - name: MONGO_OPTIONS valueFrom: configMapKeyRef: name: mongodb-configmap key: options - name: ME_CONFIG_MONGODB_ADMINUSERNAME valueFrom: secretKeyRef: name: mongodb-secret key: mongo-root-username - name: ME_CONFIG_MONGODB_ADMINPASSWORD valueFrom: secretKeyRef: name: mongodb-secret key: mongo-root-password - name: ME_CONFIG_MONGODB_SERVER valueFrom: configMapKeyRef: name: mongodb-configmap key: database_url
问题分析及修复步骤
当前警告无法消除的核心原因有两个:
- ConfigMap中的JSON字符串转义错误
- 使用了Mongo-Express不识别的环境变量
1. 修正ConfigMap的JSON格式
ConfigMap里的options字段不需要转义双引号,直接写入原始JSON即可:
apiVersion: v1 kind: ConfigMap metadata: name: mongodb-configmap data: database_url: mongodb-service options: '{"useUnifiedTopology":true}'
2. 替换为Mongo-Express支持的环境变量
Mongo-Express使用ME_CONFIG_MONGODB_OPTIONS而非MONGO_OPTIONS来传递MongoDB客户端配置。修改mongo-express.yaml中的环境变量:
env: - name: ME_CONFIG_MONGODB_OPTIONS valueFrom: configMapKeyRef: name: mongodb-configmap key: options # 其余环境变量保持不变
3. 重新部署配置
执行以下命令删除旧资源并重新应用修改后的配置:
kubectl delete configmap mongodb-configmap kubectl delete deployment mongo-express-deployment kubectl apply -f configMap.yaml kubectl apply -f mongo-express.yaml
完成以上操作后,Mongo-Express会正确加载useUnifiedTopology: true选项,驱动警告即可消除。
内容的提问来源于stack exchange,提问作者Mohammed Esmail
相关产品推荐
相关产品推荐

