【发布时间】: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