目录
一、探针是什么
探针:是由 kubelet 对容器执行的定期诊断
要执行诊断,则需kubelet 调用由容器实现的 Handler。探针有三种类型的处理程序:
ExecAction:在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。
TCPSocketAction:对指定端口上的容器的 IP 地址进行 TCP 检查。如果端口打开,则诊断被认为是成功的。
HTTPGetAction:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400,则诊断被认为是成功的。
和微服务的心跳检测类似,每隔一段时间,检测这个容器是否还正常工作,检测状态分为三种,每次检测,都会得到其中一种
成功:容器通过了诊断。
失败:容器未通过诊断。
未知:诊断失败,因此不会采取任何行动。
k8s会根据检测到的不同状态,对容器进行不同的处理
二、探针类型
探针主要有以下三种类型:
livenessProbe
readinessProbe
startupProbe
Ⅰ、livenessProbe
livenessProbe:存活性探针
指检测容器是否正在运行。
如果存活探测失败,则 kubelet 会杀死容器(需要注意:杀死的是container不是pod),并且容器将受到其重启策略(Always,OnFailure,Never)的影响。
如果容器不提供存活探针,则默认状态为 Success。
容器重启策略
PodSpec 中有一个 restartPolicy 字段,其值可以设置为
Always (默认为 Always)
OnFailure
Never
Always:表示一旦不管以何种方式终止运行,kubelet都将重启
OnFailur