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

Kubernetes部署Spring Boot服务无MongoDB配置仍自动初始化连接报错

问题排查及解决方案

前置报错日志

2021-11-23 14:45:46  INFO [,,] Located property source: [BootstrapPropertySource {name='bootstrapProperties-configmap.api-products.default'}]
2021-11-23 14:45:47  INFO [,,] The following profiles are active: kubernetes
2021-11-23 14:45:48  INFO [,,] Bootstrapping Spring Data MongoDB repositories in DEFAULT mode.
2021-11-23 14:45:48  INFO [,,] Finished Spring Data repository scanning in 5 ms. Found 0 MongoDB repository interfaces.
2021-11-23 14:45:49  INFO [,,] BeanFactory id=15b1d6de-94f9-35c9-8f2b-4562a7a1e1e6
2021-11-23 14:45:49  INFO [,,] Bean 'io.kubernetes.client.spring.extended.manifests.config.KubernetesManifestsAutoConfiguration' of type [io.kubernetes.client.spring.extended.manifests.config.KubernetesManifestsAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-11-23 14:45:49  INFO [,,] Bean 'io.kubernetes.client.spring.extended.network.config.KubernetesLoadBalancerAutoConfiguration' of type [io.kubernetes.client.spring.extended.network.config.KubernetesLoadBalancerAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-11-23 14:45:50  INFO [,,] Tomcat initialized with port(s): 8080 (http)
2021-11-23 14:45:50  INFO [,,] Starting service [Tomcat]
2021-11-23 14:45:50  INFO [,,] Starting Servlet engine: [Apache Tomcat/9.0.53]
2021-11-23 14:45:50  INFO [,,] Initializing Spring embedded WebApplicationContext
2021-11-23 14:45:50  INFO [,,] Root WebApplicationContext: initialization completed in 3348 ms
2021-11-23 14:45:52  INFO [,,] Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms'}
2021-11-23 14:45:52  INFO [,,] Exception in monitor thread while connecting to server localhost:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-4.2.3.jar!/:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:143) ~[mongodb-driver-core-4.2.3.jar!/:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:188) ~[mongodb-driver-core-4.2.3.jar!/:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:144) ~[mongodb-driver-core-4.2.3.jar!/:na]
    at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:na]
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) ~[na:na]
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) ~[na:na]
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) ~[na:na]
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:na]
    at java.base/java.net.Socket.connect(Socket.java:609) ~[na:na]
    at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:107) ~[mongodb-driver-core-4.2.3.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.2.3.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.2.3.jar!/:na]

1. 未配置MongoDB却自动触发连接报错

原因

Spring Boot 默认开启自动装配机制,只要项目ClassPath中存在MongoDB相关依赖(如spring-boot-starter-data-mongodb、mongodb-driver-core),即便没有手动添加MongoDB配置,MongoAutoConfiguration自动配置类也会生效,默认尝试连接localhost:27017的MongoDB实例。

解决方案

  • 若业务确实不需要使用MongoDB,直接在项目依赖管理文件(pom.xml/build.gradle)中移除所有MongoDB相关依赖即可
  • 若MongoDB依赖是其他组件传递引入无法直接移除,可主动禁用MongoDB自动配置:
    方式一:在启动类注解中排除自动配置类
    @SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
    
    方式二:在配置文件中添加排除规则
    spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration
    

2. 预配置端口8000未生效,实际启动为8080

原因

从日志可确认服务激活了kubernetes配置 profile,且加载了default命名空间下的api-products ConfigMap作为配置源。Spring Boot 外部配置源(K8s ConfigMap/Secret、环境变量)的优先级高于Jar包内的配置文件,出现该问题的原因通常为:

  • ConfigMap中配置了server.port=8080,覆盖了Jar包内的端口配置
  • Jar包内的server.port=8000仅配置在非kubernetes的profile段,激活kubernetes profile后未读取到对应配置

解决方案

  • 检查default命名空间下api-products ConfigMap的内容,若存在server.port=8080配置,修改为8000即可
  • 若ConfigMap中无端口配置,检查项目配置文件,在kubernetes profile对应的配置段补充server.port=8000
  • 也可直接在Deployment的env字段添加环境变量SERVER_PORT=8000,环境变量优先级更高,可直接覆盖所有配置文件的端口设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:15:03