本文主要是介绍就绪探针(Readiness Probe),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一个新Pod创建后,Service就能立即选择到它,并会把请求转发给Pod,那问题就来了,通常一个Pod启动是需要时间的,如果Pod还没准备好(可能需要时间来加载配置或数据,或者可能需要执行一个预热程序之类),这时把请求转给Pod的话,Pod也无法处理,造成请求失败。
Kubernetes解决这个问题的方法就是给Pod加一个业务就绪探针Readiness Probe,当检测到Pod就绪后才允许Service将请求转给Pod。
Readiness Probe同样是周期性的检测Pod,然后根据响应来判断Pod是否就绪,与存活探针(Liveness Probe)相同,就绪探针也支持如下三种类型。
- Exec:Probe执行容器中的命令并检查命令退出的状态码,如果状态码为0则说明已经就绪。
- HTTP GET:往容器的IP:Port发送HTTP GET请求,如果Probe收到2xx或3xx,说明已经就绪。
- TCP Socket:尝试与容器建立TCP连接,如果能建立连接说明已经就绪。
Readiness Probe的工作原理
通过Endpoints就可以实现Readiness Probe的效果,当Pod还未就绪时,将Pod的IP:Port从Endpoints中删除,Pod就绪后再加入到Endpoints中,如下图所示。
图1 Readiness Probe的实现原理
Exec
Exec方式与HTTP GET方式一致,如下所示,这个探针执行ls /ready命令
这篇关于就绪探针(Readiness Probe)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!