云容器引擎 CCE-设置容器健康检查:检查方式

时间:2024-05-31 08:37:51

检查方式

  • HTTP 请求检查

    HTTP 请求方式针对的是提供HTTP/HTTPS服务的容器,集群周期性地对该容器发起HTTP/HTTPS GET请求,如果HTTP/HTTPS response返回码属于200~399范围,则证明探测成功,否则探测失败。使用HTTP请求探测必须指定容器监听的端口和HTTP/HTTPS的请求路径。

    例如:提供HTTP服务的容器,HTTP检查路径为:/health-check;端口为:80;主机地址可不填,默认为容器实例IP,此处以172.16.0.186为例。那么集群会周期性地对容器发起如下请求:GET http://172.16.0.186:80/health-check。您也可以为HTTP请求添加一个或多个请求头部,例如设置请求头名称为Custom-Header,对应的值为example。

    图1 HTTP请求检查
  • TCP 端口检查

    对于提供TCP通信服务的容器,集群周期性地对该容器建立TCP连接,如果连接成功,则证明探测成功,否则探测失败。选择TCP端口探测方式,必须指定容器监听的端口。

    例如:有一个nginx容器,它的服务端口是80,对该容器配置了TCP端口探测,指定探测端口为80,那么集群会周期性地对该容器的80端口发起TCP连接,如果连接成功则证明检查成功,否则检查失败。

    图2 TCP 端口检查
  • 执行命令检查

    命令检查是一种强大的检查方式,该方式要求用户指定一个容器内的可执行命令,集群会周期性地在容器内执行该命令,如果命令的返回结果是0则检查成功,否则检查失败。

    对于上面提到的TCP端口检查和HTTP请求检查,都可以通过执行命令检查的方式来替代:

    • 对于TCP端口探测,可以使用程序对容器的端口尝试connect,如果connect成功,脚本返回0,否则返回-1。
    • 对于HTTP请求探测,可以使用脚本命令来对容器尝试使用wget命令进行探测。

      wget http://127.0.0.1:80/health-check

      并检查response 的返回码,如果返回码在200~399 的范围,脚本返回0,否则返回-1。如下图:

      图3 执行命令检查
      • 必须把要执行的程序放在容器的镜像里面,否则会因找不到程序而执行失败。
      • 如果执行的命令是一个shell脚本,由于集群在执行容器里的程序时,不在终端环境下,因此不能直接指定脚本为执行命令,需要加上脚本解析器。比如脚本是/data/scripts/health_check.sh,那么使用执行命令检查时,指定的程序应该是sh /data/scripts/health_check.sh。究其原因是集群在执行容器里的程序时,不在终端环境下。
  • GRPC检查
    GRPC检查可以为GRPC应用程序配置启动、活动和就绪探针,而无需暴露任何HTTP端点,也不需要可执行文件。Kubernetes可以通过GRPC 连接到工作负载并查询其状态。
    • 使用GRPC检查时,您的应用需支持GRPC健康检查协议
    • 与HTTP和TCP探针类似,如果配置错误,都会被认作是探测失败,例如错误的端口、应用未实现健康检查协议等。
    图4 GRPC检查
support.huaweicloud.com/usermanual-cce/cce_11_0112.html