在Openshift / Kubernetes上,当准备检查配置了带有路径的HTTP GET时,例如带有服务和路由的spring boot应用程序,是HTTP GET请求调用Openshift服务或路由或其他东西,期待200-399 ?
谢谢,B。
The kubernetes documentation on readiness and liveness probes说
对于HTTP探测,kubelet将HTTP请求发送到指定的
path
和port
以执行检查。 kubelet将探测器发送到pod的IP地址,除非地址被host
中的可选httpGet
字段覆盖。 [...]在大多数情况下,您不想设置host
字段。这是您设置它的一个场景。假设Container侦听127.0.0.1并且Pod的hostNetwork
字段为true。然后在host
下的httpGet
应该设置为127.0.0.1。如果你的pod依赖虚拟主机,这可能是更常见的情况,你不应该使用host
,而是在httpHeaders
中设置主机头。
所以它使用Pod的IP,除非你在探针上设置host
字段。此处不使用服务或入口路由,因为准备和活动探测用于确定服务或入口路由是否应将流量发送到Pod。
HTTP请求来自Kubelet。每个kubernetes节点都运行Kubelet进程,该进程负责节点注册和pod的管理。 Kubelet还负责观察绑定到其节点的Pod集,并确保这些Pod正在运行。然后它会报告状态,因为这些Pod会发生变化。
When talking about the HTTP probe,文档说
任何大于或等于200且小于400的代码表示成功。任何其他代码表示失败。
正确的是,它正在使用webhook来确定容器是否已准备好为请求提供服务。默认情况下,请求直接发送到Pod IP,因为当它失败时,将从所有服务的所有端点删除容器IP。这可以通过探针定义中提交的host
来覆盖。
如您所述,任何200-399的响应代码都被认为是成功的。