gpt4 book ai didi

spring-boot - kubernetes中的Spring Boot服务始终以HTTP状态400响应

转载 作者:行者123 更新时间:2023-12-02 11:58:25 27 4
gpt4 key购买 nike

我们在Kubernetes中运行了Spring Boot服务。
该服务具有端点:
-GET / healthz

我们有使用此端点的 Activity 探针。探测成功运行。
这意味着可以从服务 Pane (本地主机)访问端点。

当我在服务舱中运行时:
wget https://localhost:8080/healthz我得到答案(好)

当我尝试在pod wget https://myhost:8080/healthz之外调用此终结点时,我收到响应400,而没有正文
我没有看到Sprint的任何日志。看来它没有达到Sprint。
当我添加标志-Djavax.net.debug=all时,我在日志中看到TLS握手已完成,然后:

GET /healthz HTTP/1.1    
host: myhost:8080
accept: application/json
Connection: close

并立即
HTTP/1.1 400 
Transfer-Encoding: chunked
Date: Mon, 25 Jun 201 8 08:43:43 GMT
Connection: close

当我尝试 wget https://myhost:8080/blahblah(不存在端点)时,
我仍然得到400,而不是404!

当我尝试 wget https://myWronghost:8080/healthz(错误的主机)时,出现错误 Bad address。这意味着主机“myhost”是正确的(否则我会得到此错误)。

Docker文件:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENV JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8
ENTRYPOINT ["java","-Djavax.net.debug=all", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8080



加起来:
可从服务 Pane 内部访问服务端点,但不能从 Pane 外部访问服务端点。
知道为什么吗?

更新:
通过使用 完全限定域名调用服务来解决该问题:serviceName.namespaceName.svc.cluster.local
Tomcat不接受带有短域serviceName.namespaceName的 call ,它响应了400。

最佳答案

您的问题可能是由https://github.com/spring-projects/spring-boot/issues/13205引起的。
您所要做的就是将Tomcat版本升级到8.5.32。您可以通过在pom.xml文件中添加版本来实现。

 <properties>
<!-- your properties -->
<tomcat.version>8.5.32</tomcat.version>
</properties>

关于spring-boot - kubernetes中的Spring Boot服务始终以HTTP状态400响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51023105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com