kubernetes之探针

作者 YYGCui 日期 2017-07-23
Categories: 技术积累 Tags: kubernetes
kubernetes之探针

探针是kubelet用于周期性诊断容器的一种方式。目前kubenertes提供两种探针,通过调用容器提供的句柄(handler)来实现监测诊断。

两种探针

  • livenessProbe: 用于探测容器是否处于Running状态,如果该探针返回失败,kubelet将会杀掉容器,并根据restart policy来决定是否重新创建该容器。如果没有配置该探针,默认返回成功的状态,只有容器crash,才会触发失败状态返回。
  • readinessProbe: 用于探测容器是否可以处理服务请求,如果该探针失败,端点控制器将会把该Pod的IP从关联的Service中删除掉。如果没有配置该探针,默认返回成功的状态。

三种操作

  • ExecAction: 在容器中执行命令行,如果命令的退出状态是0,则认为探针的状态是成功。
  • TCPSocketAction: 向容器指定端口上发送TCP请求,如果该端口已被监听,则认为探针的状态是成功。
  • HTTPGetAction: 向容器指定端口和路径发送HTTP GET请求,如果返回状态码处于200到400之间,则认为探针的状态是成功。

四种场景

  • Default: 不配置探针时,容器处于不健康的状态(如crash)时,kubelet也会杀掉容器;容器正常初始化后,就认为是可以提供服务的状态。
  • Custom: 在某种情况下,进程无法正常提供功能,但容器依然处于健康状态,则可以通过配置liveness探针实现杀掉容器; 进程初始化事件比较长,则可以通过配置readiness探针实现服务可用。
  • Reset: 某些进程处于中间过程状态,但又希望从初始状态开始时,可以通过配置liveness探针实现,同时提供复位接口,如请求复位接口,则探针返回失败状态,从而实现复位操作。默认返回成功状态。
  • OutOfService: 在进行服务升级时,需要将服务临时下线,可以通过配置readiness探针实现,同时提供服务下线接口,如请求下线接口,则探针返回失败状态,从而实现下线操作。默认返回成功状态。

参考: