0、简介
》 当pod状态显示为running,这表明pod中所有容器都已经运行,但这并不意味着pod中的应用程序已经准备好提供服务。实际上,running状态仅仅表示容器的启动状态,与应用程序是否准备好提供服务没有直接关系。可能由于以下原因,应用程序不能提供服务:
- 应用程序启动慢:容器已运行,但容器中的应用程序还在启动中,这个时候容器仍然无法提供服务
- 应用程序假死:应用程序由于某种原因(死锁、代码bug),无法继续执行后面的工作
》 为了解决这类问题,kubernetes提供了探针机制。探针被配置为周期性检查容器中应用程序的健康状态。如果应用程序异常,则kubernetes将通过容器探针采取响应的措施。
- 探针支持以下三种类型
- startupProbe:启动探针,检查容器中应用程序是否启动。它仅用于容器启动阶段确定应用程序是否运行,一旦启动探针成功,它就不会再继续执行
- livenessProbe:存活探针,检查容器中应用程序是否运行。如果存活探针失败,kubernetes将重新启动容器,以尝试恢复应用程序的运行状态
- readinessProbe:就绪探针,监测容器中应用程序是否整备好接受流量。如果就绪探针失败,kubernetes将pod标记为未就绪准备,从而防止将新的流量转发到该pod
- 探针支持以下三种检查方法:
- httpGet:向容器中执行发送HTTP请求来判断健康状态,如果响应的状态码大于或等于200且小于400则表示成功,其他状态码则表示失败
- tcpSocket:向容器中指定端口简历TCP连接来判断健康状态。如果tcp建立成功,则表示成功,否则表示失败
- exec:在容器中执行命令,根据命令的退出状态码来判断健康状态。如果命令的退出状态为0,则表示成功,非0表示失败
1、存活探针
》 启动探针是在kubernetes1.18 版本中引入的,用于在容器启动时检查应用程序是否启动。与就绪探针和存活探针不通,启动探针是在容器启动时进行的,而不是在容器运行时进行的
- 以下是启动探针的使用场景
- 避免不必要的重启:由于某种原因(如节点负载高)导致引用程序
标签:容器,D10,kubernetes,启动,状态,探针,应用程序
From: https://www.cnblogs.com/suyj/p/18376865