Spring RestClient在Kubernetes集群中调用外部API触发ConnectException连接异常排查求助
Spring RestClient在Kubernetes集群中调用外部API触发ConnectException连接异常排查求助
大家好,我本地使用Spring的RestClient进行REST接口调用完全正常,但部署到Kubernetes集群的Pod中执行时就遇到了问题,想请大家帮忙排查下原因。
我的调用代码如下:
private fun callApi() { log.info("Deleting device with $id") restClient .delete() .uri("${getBaseUrl()}/api/${getId()}") .headers { it.setBearerAuth(getToken()) } .retrieve() .onStatus({ obj: HttpStatusCode -> obj.isError }, ERROR_HANDLER) .toBodilessEntity() }
在集群中执行时会抛出如下异常:
org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://my-api.com": null at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriS pec.createResourceAccessException(DefaultRestClient.java:584) ~ [spring-web-6.1.13.jar!/:6.1.13] at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriS pec.exchangeInternal(DefaultRestClient.java:498) ~[spring-web- 6.1.13.jar!/:6.1.13] at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriS pec.retrieve(DefaultRestClient.java:458) ~[spring-web- 6.1.13.jar!/:6.1.13] Caused by: java.net.ConnectException: null at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl. java:951) ~[java.net.http:na] at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFac ade.java:133) ~[java.net.http:na] at org.springframework.http.client.JdkClientHttpRequest.executeInternal(Jd kClientHttpRequest.java:102) ~[spring-web-6.1.13.jar!/:6.1.13] at org.springframework.http.client.AbstractStreamingClientHttpRequest.exec uteInternal(AbstractStreamingClientHttpRequest.java:70) ~[spring- web-6.1.13.jar!/:6.1.13] at org.springframework.http.client.AbstractClientHttpRequest.execute(Abstr actClientHttpRequest.java:66) ~[spring-web-6.1.13.jar!/:6.1.13] at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriS pec.exchangeInternal(DefaultRestClient.java:492) ~[spring-web- 6.1.13.jar!/:6.1.13] ... 35 common frames omittedCaused by: java.net.ConnectException: null at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Uti ls.java:1028) ~[java.net.http:na] at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(Pl ainHttpConnection.java:227) ~[java.net.http:na] at java.net.http/jdk.internal.net.http.PlainHttpConnection.checkRetryConne ct(PlainHttpConnection.java:280) ~[java.net.http:na] at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectA sync$2(PlainHttpConnection.java:238) ~[java.net.http:na] at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableF uture.java:934) ~[na:na] at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(C ompletableFuture.java:911) ~[na:na] at java.base/java.util.concurrent.CompletableFuture.postComplete(Comple tableFuture.java:510) ~[na:na] at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Com pletableFuture.java:1773) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPo olExecutor.java:1144) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadP oolExecutor.java:642) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]Caused by: java.nio.channels.ClosedChannelException: null at java.base/sun.nio.ch.SocketChannelImpl.ensureOpen(SocketChannelImpl. java:202) ~[na:na] at java.base/sun.nio.ch.SocketChannelImpl.beginConnect(SocketChannelImp l.java:786) ~[na:na] at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.jav a:874) ~[na:na] at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$conne ctAsync$1(PlainHttpConnection.java:210) ~[java.net.http:na] at java.base/java.security.AccessController.doPrivileged(AccessControll er.java:571) ~[na:na] at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync (PlainHttpConnection.java:212) ~[java.net.http:na] ... 9 common frames omitted
如果需要更多信息请随时告诉我,非常感谢大家的任何提示!
备注:内容来源于stack exchange,提问作者rento
相关产品推荐
相关产品推荐

