【问题标题】:Openshift Online Pro health check doesn't connect when the http url is valid当 http url 有效时,Openshift Online Pro 运行状况检查未连接
【发布时间】:2018-03-06 22:42:33
【问题描述】:

我们正在使用 OpenShift Online Pro。

我有一个应用程序,我想在其中添加就绪运行状况检查。如果我从我的笔记本电脑上检查 URL,那就太好了:

simon$ curl --head  http://x.y.pro-eu-west-1.openshiftapps.com/api/ready
HTTP/1.1 200 OK

如果我使用控制台添加检查,它会在侦听端口“8080”上显示“HTTP GET”、“/api/ready”。 https://docs.openshift.com/online/dev_guide/application_health.html 的文档建议 15 秒延迟和 1 秒超时可能是合理的,所以我试一试。

导出 dc/后端显示:

readinessProbe:
      failureThreshold: 3
      httpGet:
        path: /api/ready
        port: 8080
        scheme: HTTP
      initialDelaySeconds: 15
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 1

这会给出带有错误的事件,例如:

Readiness probe failed: Get http://10.130.7.168:8080/api/ready: dial tcp 10.130.7.168:8080: getsockopt: connection refused

该应用程序的 PHP 启动速度如此之快,但在 5 分钟和 28 次警告后,我放弃并删除了运行状况检查。

如果我然后等待查看“已创建容器”以进行下一次部署,我可以在一分钟内卷曲“/api/ready”并获得健康的响应。

为了让支票正常工作,我缺少什么?

【问题讨论】:

  • 您使用的是提供的 PHP S2I 构建器,还是您自己的 PHP 映像?
  • 好点。部署在标准 php s2i 和示例应用程序中,它运行良好,pod 日志显示轮询“Go-http-client/1.1”请求。我可以打开一个终端并卷曲它,然后在日志中看到“curl/7.29.0”。如果我打开一个终端到我用自定义 s2i 构建的图像,它不能卷曲到http://localhost:8080/index.php。因此,服务器似乎不接受来自公共路由的流量接受。
  • php s2i 示例不附带就绪探测检查。你加了一个吗?您是否尝试将 timeoutSeconds 值增加到 1 以外的值?
  • @WillGordon 哇。如果我进入 Web 控制台上 pod 的终端选项卡和curl http://localhost:8000/api/ready,它会给出“$?” 0。如果我curl http://localhost:8080/api/ready 我得到连接被拒绝。然而,我在配置中没有看到任何名称为 8000 的内容。我的问题中也没有任何内容。
  • 抱歉,我只知道查看端口 8000,因为我为 OpenShift 工作,并且根据您的 dc/backend 我能够找到您的项目。然后使用oc get all我看到你的服务被配置为服务端口8000。

标签: openshift openshift-3 openshift-online


【解决方案1】:

我的错。我通过 Web 控制台设置了检查,默认情况下它建议使用端口 8080。然而我正在使用的 s2i 正在监听 8000。

【讨论】:

    猜你喜欢
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2016-06-14
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    相关资源
    最近更新 更多