【问题标题】:Openshift + Readiness CheckOpenshift + 就绪检查
【发布时间】:2018-01-03 20:46:02
【问题描述】:

在 Openshift/Kubernetes 上,当使用带有路径的 HTTP GET 配置就绪检查时,例如带有服务和路由的 Spring Boot 应用程序,是 HTTP GET 请求调用 Openshift 服务或路由或其他东西并期望200-399?

谢谢, B.

【问题讨论】:

    标签: kubernetes openshift


    【解决方案1】:

    The kubernetes documentation on readiness and liveness probes 声明

    对于 HTTP 探测,kubelet 向指定的 path 和 port 发送 HTTP 请求以执行检查。 kubelet 将探测发送到 pod 的 IP 地址,除非该地址被 httpGet 中的可选 host 字段覆盖。 [...] 在大多数情况下,您不想设置 host 字段。这是您设置它的一种情况。假设 Container 监听 127.0.0.1 并且 Pod 的 hostNetwork 字段为真。那么host,在httpGet下,应该设置为127.0.0.1。如果你的 pod 依赖于虚拟主机,这可能是更常见的情况,你不应该使用 host,而应该在 httpHeaders 中设置 Host 标头。

    所以它使用 Pod 的 IP,除非你在探针上设置了 host 字段。此处未使用服务或入口路由,因为就绪和活跃度探测用于决定服务或入口路由是否应将流量发送到 Pod。

    HTTP 请求来自 Kubelet。每个 kubernetes 节点都运行 Kubelet 进程,该进程负责节点注册和 Pod 的管理。 Kubelet 还负责监视绑定到其节点的 Pod 集,并确保这些 Pod 正在运行。然后,当这些 Pod 发生变化时,它会报告状态。

    When talking about the HTTP probe,文档是这么说的

    任何大于或等于 200 且小于 400 的代码都表示成功。任何其他代码都表示失败。

    【讨论】:

      【解决方案2】:

      正确,它使用 webhook 来确定容器是否准备好为请求提供服务。默认情况下,请求是直接向 Pod IP 发出的,因为当它失败时,容器 IP 将从所有服务的所有端点中删除。这可以被探针定义中的host 覆盖。

      正如您所提到的,从 200-399 的任何响应代码都被视为成功。

      【讨论】:

        猜你喜欢
        • 2019-05-21
        • 1970-01-01
        • 2019-04-03
        • 1970-01-01
        • 1970-01-01
        • 2020-10-31
        • 2021-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多