Kubernetes的3中探针readinessProbe、livenessProbe和startupProbe
探针
K8S 提供了 3 种探针
startupProbe 启动检查(1.16 版本新增)
livenessProbe 存活检查
readinessProbe 就绪检查
startupProbe
kubernetes 1.16 版本新增功能,用于判断容器内应用程序是否已经启动,如果配置了 startuprobe,就会先禁用其他的探测,直到它成功为止,成功后将不再进行探测。
1 | startupProbe: # 健康检查方式:[readinessProbe,livenessProbe,StartupProbe] |
readinessProbe
一般用于探测容器内的程序是否健康,它的返回值如果为 success,那么就代表这个容器已经完成启动,并且程序已经是可以接受流量的状态. 这个时候就会被加到 service 的后端列表中,即可以对外提供服务。
livenessProbe
用于探测容器是否运行,如果探测失败,kubelet 会根据配置的重启策略进行相应的处理,如果没有配置该探针,默认就是 success
检查方式
httpget
kubelet 会向容器内运行的服务(服务在监听 8080 端口)发送一个 HTTP GET 请求来执行探测。 如果服务器上 /healthz 路径下的处理程序返回成功代码,则 kubelet 认为容器是健康存活的。 如果处理程序返回失败代码,则 kubelet 会杀死这个容器并将其重启。
返回大于或等于 200 并且小于 400 的任何代码都标示成功,其它返回代码都标示失败。
1 | livenessProbe: |
tcp 端口
端口通了则成功,不通则失败
1 | startupProbe: |
执行命令
如果命令执行成功并且返回值为 0,kubelet 就会认为这个容器是健康存活的。 如果这个命令返回非 0 值,kubelet 会杀死这个容器并重新启动它。
1 | livenessProbe: |
一个线上的配置
1 | livenessProbe: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
评论