Openshift 容器运行状况探测连接被拒绝

Openshift container health probe connection refused

嗨,openshift 社区,

我目前正在将一个应用程序迁移到 Openshift,并且由于连接被拒绝而遇到失败的运行状况探测。我觉得奇怪的是,如果我 ssh 进入 pod 并使用 卷曲 localhost:10080/xxx-service/info 它 returns HTTP 200 但如果我使用 IP 地址然后它失败

这是详细信息:

  1. POD 状态

  1. Openshift 中的日志显示 Spring 启动成功

  1. Openshift 事件说探测由于连接被拒绝而失败

  1. 尝试通过 SSH 连接到 pod 以检查使用本地主机是否有效

不确定为什么 IP 地址未在 POD 级别解析...。有人知道答案或遇到过吗?

很难说你的情况到底是什么问题,因为它是特定于环境的。

一般来说,您应该避免在使用 Kubernetes 时使用 IP 地址,因为这些会在 Pod 重新启动时发生变化(这可能是您遇到的问题的根本原因)看到).

在为您的容器定义就绪性和活性探测时,我建议您始终使用以下语法来定义您的检查(请注意它不指定主机):

...
readinessProbe:
  httpGet:
    path: /xxx-service/info
    port: 10080
  initialDelaySeconds: 15
  timeoutSeconds: 1
...

另请参阅 Kubernetes 或 OpenShift 文档以获取更多信息:

我找到了根本原因,原来是 Spring 相关。

这是一个 Spring 启动应用程序,被打包为 WAR 文件并部署到 Tomcat 服务器。在 application.properties 中,它有这个字段:

server.address=127.0.0.1

删除它已解决此问题。

https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties-server