K8s探针

作者: 伊凡的一天 | 来源:发表于2020-02-18 13:41 被阅读0次

K8s中存在两种类型的探针:liveness probe和readiness probe。

liveness probe(存活探针)

用于判断容器是否存活,即Pod是否为running状态,如果LivenessProbe探针探测到容器不健康,则kubelet将kill掉容器,并根据容器的重启策略是否重启。如果一个容器不包含LivenessProbe探针,则Kubelet认为容器的LivenessProbe探针的返回值永远成功。

有时应用程序可能因为某些原因(后端服务故障等)导致暂时无法对外提供服务,但应用软件没有终止,导致K8S无法隔离有故障的pod,调用者可能会访问到有故障的pod,导致业务不稳定。K8S提供livenessProbe来检测应用程序是否正常运行,并且对相应状况进行相应的补救措施。

注意,liveness探测失败并一定不会重启pod,pod是否会重启由你的restart policy 控制。

readiness probe(就绪探针)

用于判断容器是否启动完成,即容器的Ready是否为True,可以接收请求,如果ReadinessProbe探测失败,则容器的Ready将为False,控制器将此Pod的Endpoint从对应的service的Endpoint列表中移除,从此不再将任何请求调度此Pod上,直到下次探测成功。通过使用Readiness探针,Kubernetes能够等待应用程序完全启动,然后才允许服务将流量发送到新副本。

比如使用tomcat的应用程序来说,并不是简单地说tomcat启动成功就可以对外提供服务的,还需要等待spring容器初始化,数据库连接没连上等等。对于spring boot应用,默认的actuator带有/health接口,可以用来进行启动成功的判断。

每类探针都支持三种探测方法:

  • exec:通过执行命令来检查服务是否正常,针对复杂检测或无HTTP接口的服务,命令返回值为0则表示容器健康。
  • httpGet:通过发送http请求检查服务是否正常,返回200-399状态码则表明容器健康。
  • tcpSocket:通过容器的IP和Port执行TCP检查,如果能够建立TCP连接,则表明容器健康。

探针探测的结果有以下三者之一:

  • Success:Container通过了检查。
  • Failure:Container未通过检查。
  • Unknown:未能执行检查,因此不采取任何措施。

Pod重启策略:

  • Always: 总是重启
  • OnFailure: 如果失败就重启
  • Never: 永远不重启

例子

apiVersion: v1
kind: Pod
metadata:
  name: goproxy
  labels:
    app: goproxy
spec:
  containers:
  - name: goproxy
    image: k8s.gcr.io/goproxy:0.1
    ports:
    - containerPort: 8080
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20

探针(Probe)有许多可选字段,可以用来更加精确的控制Liveness和Readiness两种探针的行为。这些参数包括:

  • initialDelaySeconds:容器启动后第一次执行探测是需要等待多少秒。
  • periodSeconds:执行探测的频率。默认是10秒,最小1秒。
  • timeoutSeconds:探测超时时间。默认1秒,最小1秒。
  • successThreshold:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1。对于liveness必须是1。最小值是1。
  • failureThreshold:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。

参考文章

相关文章

  • K8s探针

    K8s中存在两种类型的探针:liveness probe和readiness probe。 liveness pr...

  • 关于Kubernetes探针第一次探测的问题

    关于k8s的两种探针,想必大家都参考过(https://kubernetes.io/docs/tasks/conf...

  • APM 探针分析

    概要 APM探针主要有侵入式探针和非侵入式探针。 其中侵入式探针以zipkin为代表,非侵入式探针以pinpoin...

  • 基因芯片基础知识

    探针组:来自于一个基因,通常由20对或者11对探针组成,每一探针对又分为匹配探针PM和错配探针MM DAT文件:荧...

  • K8S容器编排之POD健康检测(2)

    ReadinessProbe探针配置: ReadinessProbe探针的使用场景livenessProbe稍有不...

  • 配置Liveness和Readiness探针

    1、Liveness 探针: 命令类型 2、Liveness 探针 : HTTP 请求类型 3、Liveness ...

  • k8s副本机制和其他控制器

    个人学习笔记 保持POD健康 存活探针1.HTTP GET 2.TCP套接字3.Exec探针 就绪探针 rc的管理...

  • WIFI探针在安防监控行业的应用

    今年的3.15,WiFi探针火了。WiFi探针本身仅仅是一种通信技术,但是被歪曲应用和误解了。WiFi探针本身其实...

  • 2018-06-23

    基于ESP8266的WIFI 探针使用说明 我使用的是四博智联提供的WIFI探针 DT-06产品(记得要是探针固件...

  • 探针

    这就是我 这就是生活 如此平凡,平庸,渺小 甚至猥琐,与我敬爱的人们相比 如果可以有脸相比 我的一切都显得多么可耻...

网友评论

      本文标题:K8s探针

      本文链接:https://www.haomeiwen.com/subject/ftsgfhtx.html