33.2. 使用探测的容器健康检查
探测(probe)是一种 Kubernetes 操作,它会定期对运行中的容器执行诊断。目前,存在两种类型的探测,各自满足不同的目的:
存活度(Liveness)探测 |
存活度探测检查在其中配置的容器是否仍然在运行。如果存活度探测失败,kubelet 会终止该容器,这将受到重启策略的影响。通过配置 Pod 配置的 |
就绪度(Readiness)探测 |
就绪度探测(Readiness probe)决定容器是否准备好服务请求。如果某一容器的就绪度探测失败,则端点控制器将确保从所有服务的端点中移除该容器的 IP 地址。就绪度探测也可用于向端点控制器发送信号,即使有容器在运行它也不应从代理接收任何流量。通过配置 Pod 配置的 |
探测的确切时间由两个字段控制,它们以秒为单位表示:
字段 | 描述 |
---|---|
| 容器启动后等待多久才能开始探测。 |
|
等待探测完成的时间(默认: |
可以通过两种方式配置两个探测:
HTTP 检查
kubelet 使用 Web hook 来确定容器的健康状态。如果 HTTP 响应代码介于 200 和 399 之间,则检查被认定为成功。以下是使用 HTTP 检查方法就绪度检查示例:
例 33.1. 就绪度 HTTP 检查
对于在完全初始化后返回 HTTP 状态代码的应用程序,HTTP 检查是理想的选择。
容器执行检查
kubelet 在容器内执行一个命令。退出检查时状态为 0 被视为成功。以下是使用容器执行方法的存活度检查示例:
例 33.2. 存活度容器执行检查
timeoutSeconds
参数不影响容器执行检查的就绪度和存活度探测。
timeoutSeconds
参数不影响容器执行检查的就绪度和存活度探测。您可以在探测本身中使用超时机制,因为 OpenShift Container Platform 无法对进入容器的 exec 调用执行超时。在探测中实施超时的一种方法是使用 timeout
参数来运行存活度或就绪度探测:
- 1
- 超时值和探测脚本路径。
TCP 套接字检查
kubelet 尝试向容器打开一个套接字。只有检查能够建立连接,容器才被视为健康。以下是使用 TCP 套接字检查方法的存活度检查示例:
例 33.3. 存活度 TCP 套接字检查
对于只有初始化完毕后才开始侦听的应用程序,TCP 套接字检查是理想的选择。
如需有关健康检查的更多信息,请参阅 Kubernetes 文档。