You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s部署mongo-express报UnhandledPromiseRejection错误如何解决?

问题根因与排查解决方案

从报错日志可以看出核心问题是mongo-express无法和MongoDB服务建立网络连接,可按以下步骤排查修复:

1. 修复MongoDB Service端口不匹配问题

你当前配置的mongodb-service端口规则为:集群内访问Service的80端口才会转发到MongoDB Pod的27017端口,但mongo-express默认用27017端口访问MongoDB服务,直接导致连接超时。
推荐将Service端口调整为MongoDB默认的27017,避免后续混淆:

# 修改后的mongodb-service配置
apiVersion: v1
kind: Service
metadata:
  name: mongodb-service
spec:
  selector:
    app: mongodb
  ports: 
    - protocol: TCP
      port: 27017 # 将原来的80改为27017
      targetPort: 27017 

重新应用该配置即可生效。

2. 修正ConfigMap配置错误

日志中连接串末尾出现多余的"(转义双引号),说明你创建的mongodb-configmap里database_url的值多了多余的引号或特殊字符。正确的ConfigMap配置参考:

apiVersion: v1
kind: ConfigMap
metadata:
  name: mongodb-configmap
data:
  database_url: mongodb-service # 不要加引号、不要加端口、不要加协议前缀

3. 确认Secret资源正常创建

执行以下命令检查Secret是否存在且配置正确:
kubectl get secret mongodb-secret -o yaml
如果不存在可以用以下命令快速创建:
kubectl create secret generic mongodb-secret --from-literal=mongo-root-username=root --from-literal=mongo-root-password=root

4. 调整资源部署顺序

按以下顺序创建资源,避免依赖项未就绪导致超时:

  • 先创建Secret、ConfigMap
  • 再创建MongoDB Deployment和Service,等待MongoDB Pod状态变为Running
  • 最后创建mongo-express Deployment

5. 手动验证网络连通性

如果修改后仍报错,可以启动临时busybox Pod验证网络连通性:
kubectl run -it --rm --image=busybox:1.28 debug -- sh
进入Pod后执行以下命令:

  • 验证DNS解析:nslookup mongodb-service
  • 验证端口连通性:nc -zv mongodb-service 27017

日志中关于useUnifiedTopology的警告属于版本兼容提示,不影响服务正常运行,无需单独处理。


内容的提问来源于stack exchange,提问作者Nagesh Kumbhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 13:06:04