腾讯云容器集群内核基于 Kubernetes。Kubernetes 支持对容器进行周期性探测,并根据探测结果判断容器的健康状态,执行额外的操作。
健康检查分为以下类别:
TCP 端口探测的原理如下:
对于提供 TCP 通信服务的容器,集群周期性地对该容器建立 TCP 连接。如果连接成功,证明探测成功,否则探测失败。选择 TCP 端口探测方式,必须指定容器监听的端口。
例如,一个 redis 容器,它的服务端口是6379。我们对该容器配置了 TCP 端口探测,并指定探测端口为6379,那么集群会周期性地对该容器的6379端口发起 TCP 连接。如果连接成功,证明检查成功,否则检查失败。
HTTP 请求探测是针对于提供 HTTP/HTTPS 服务的容器,并集群周期性地对该容器发起 HTTP/HTTPS GET 请求。如果 HTTP/HTTPS response 返回码属于200 - 399范围,证明探测成功,否则探测失败。使用 HTTP 请求探测必须指定容器监听的端口和 HTTP/HTTPS 的请求路径。
例如,提供 HTTP 服务的容器,服务端口为 80,HTTP 检查路径为 /health-check
,那么集群会周期性地对容器发起GET http://containerIP:80/health-check
请求。
执行命令检查是一种强大的检查方式,该方式要求用户指定一个容器内的可执行命令,集群会周期性地在容器内执行该命令。如果命令的返回结果是0,检查成功,否则检查失败。
对于 TCP 端口探测 和 HTTP 请求探测,都可以通过执行命令检查的方式来替代:
wget http://127.0.0.1:80/health-check
。如果返回码在200 - 399的范围,脚本返回0,否则返回 -1。/data/scripts/health_check.sh
,那么使用执行命令检查时,指定的程序应为:sh
/data/scripts/health_check.sh
设置步骤以通过 容器服务控制台 创建 Deployment 为例:sh
/data/scripts/health_check.sh
注意:如果健康检查的类型为存活检查,那么健康阈值只能是1,用户设置成其它值将被视为无效。
本页内容是否解决了您的问题?