类型
- 启动探针 startup
检测容器内进程是否已经启动完成并完成初始化。在启动探针未就绪前,存活探针以及就绪探针不会生效,避免在容器启动期间,还未完全启动完成,但就绪探针或存活探针已开始工作,导致探针检测失败,重启容器。
检测成功:开始执行存活探针或就绪探针
检测失败:根据重启策略决定是否重启容器
检测未知:静默
仅在pod启动时,执行一次。
- 就绪探针 readliness
检测容器是否已经准备好对外提供服务。当就绪探针探测成功时,表示容器内部程序已经做好对外提供服务的准备,kubectl会将该容器标记为“就绪”状态,service会将容器IP添加到后端服务列表,转发流量到该容器。
检测成功:将容器标记为就绪状态,转发流量到该容器
检测失败:停止转发流量到该容器
检测未知:静默
在整个pod的生命周期中,周期性运行。
- 存活探针 liveness
检测容器是否处于存活状态,可以对外提供服务。当存活探针检测到服务不可用时,会根据pod的重启策略来决定是否重启容器。
检测成功:静默
检测失败:根据重启策略决定是否重启容器
检测未知:静默
在整个pod的生命周期中,周期性运行。
参数
- initialDelaySeconds:启动探针前需要等待的秒数
- periodSeconds:探针检测的频率
- timeoutSeconds:将探针标记为超时(未通过运行状态检查)之前的秒数
- successThreshold:探针需要通过的最小连续成功检查数量
- failureThreshold:将探针标记为失败之前的重试次数
检测类型
- http
发生http请求到endpoint,检测2xx和3xx的响应
参数:
- host:要连接的主机名(默认值:pod 的 IP)
- port:端口号,必须
- path:服务器上的路径
- scheme:使用的协议,http或https
livenessProbe:
httpGet:
port: 8080
path: /healthz
- TCP
检查tcp端口状态,对于不适合http探针的gRPC或FTP服务器,可以使用TCP探针
参数:
- port:端口号,必须
- host:要连接的主机名(默认值:pod 的 IP)
readinessProbe:
tcpSocket:
port: 21
- Command
通过运行shell命令来检查pod情况,如果命令返回的退出代码为0,则通过检查。如果不希望公开 HTTP 服务器与端口,或者希望通过命令检查初始化步骤(例如,检查是否已创建配置文件、运行 CLI 命令),这种类型的探针会很有用。
readinessProbe:
exec:
command: ['/bin/sh', '-c', 'cat /etc/healthz']