【问题标题】:Openshift readiness probe not executed未执行 Openshift 就绪探测
【发布时间】:2019-05-21 19:11:12
【问题描述】:

在 OpenShift Pod 中运行 Spring Boot 应用程序。为了执行就绪和活跃度探测,我创建了一个适当的 YAML 文件。然而,Pod 失败并响应说他无法通过就绪检查(大约 5 分钟后)。

我的目标是每 20 分钟执行一次就绪探测。但我认为它失败了,因为它将 initalDelaySeconds 与 periodSeconds 相加。所以我猜想 pod 启动后的第一次检查将在 22 分钟后执行。

遵循就绪探针的相关配置。

readinessProbe:
  failureThreshold: 3
  httpGet:
    path: /actuator/health
    port: 8080
    scheme: HTTP
  initialDelaySeconds: 120
  periodSeconds: 1200
  successThreshold: 1
  timeoutSeconds: 60

我的假设对吗?如何避免它(也许增加有关 kubelet 的超时)?

【问题讨论】:

  • 就绪探测(如果已定义)决定了您的 pod 是否被视为就绪,以及是否应该针对发送给它的服务和流量添加它。除非确实有必要,否则您不应该添加延迟,并且事件不会有那么长的延迟,因为您的应用程序在第一次通过之前不会处理请求。为什么你觉得你需要这样做?您是否理解或混淆了就绪/活跃度探测的目的?
  • 也许可以查看免费电子书openshift.com/deploying-to-openshift中关于监控应用程序运行状况一章中对探针的解释

标签: kubernetes containers openshift


【解决方案1】:

您的配置是正确的,initialDelaySecondsperiodSeconds 不总结。因此,第一次 readinessProbe HTTP 调用将在您启动 POD 后的 2 分钟内完成。

我会在你的应用程序本身中寻找问题,我首先想到的是你的路径是/actuator/health,不应该只是/health吗?这是 Spring Boot Actuator 的默认设置。

如果这没有帮助,那么最好调试它:exec 到您的容器中并使用 curl 检查您的健康端点是否正常工作(它应该返回 HTTP 代码 200)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 2019-12-05
    • 2018-07-10
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多