This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第 6 章 监控应用程序的健康状态
在软件系统中,组件可能会变得不健康,原因可能源自连接暂时丢失、配置错误或外部依赖项相关问题等临时问题。OpenShift Container Platform 应用程序具有若干选项来探测和处理不健康的容器。
6.1. 了解健康检查 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
探测(probe)是一种 Kubernetes 操作,它会定期对运行中的容器执行诊断。目前有两种类型的探测,分别满足不同的目的。
- 就绪度(Readiness)探测
- 就绪度检查确定在其中调度这个操作的容器是否已准备好满足请求。如果某一容器的就绪度探测失败,则端点控制器将确保从所有服务的端点中移除该容器的 IP 地址。就绪度探测也可用于向端点控制器发送信号,即使有容器在运行它也不应从代理接收任何流量。
例如,就绪度检查可以控制要使用哪些 Pod。如果 Pod 尚未就绪,它会被移除。
- 存活度(Liveness)探测
- 存活度检查确定在其中调度这个操作的容器是否仍然在运行。如果存活度探测因为死锁等某种状况而失败,kubelet 会终止容器。容器而后根据其重启策略做出响应。
例如,restartPolicy
为 Always
或 OnFailure
的节点上的存活度探测可以终止并重启该节点上的容器。
存活度检查示例
不健康容器存活度检查输出结果示例
6.1.1. 了解健康检查的类型 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
存活度检查和就绪度检查可以通过三种方式进行配置:
- HTTP 检查
- kubelet 使用 Web hook 来确定容器的健康状态。如果 HTTP 响应代码介于 200 和 399 之间,则检查被认定为成功。
对于在完全初始化后返回 HTTP 状态代码的应用程序,HTTP 检查是理想的选择。
- 容器执行检查
- kubelet 在容器内执行一个命令。退出检查时状态为 0 被视为成功。
- TCP 套接字检查
- kubelet 尝试向容器打开一个套接字。只有检查能够建立连接,容器才被视为健康。对于只有初始化完毕后才开始侦听的应用程序,TCP 套接字检查是理想的选择。