读书笔记-Pod健康检查和服务可用性检查

kubelet通过定期执行LivenessProbe和ReadinessProbe这两类探针来诊断容器的健康状况

1、LivenessProbe探针:用于判断容器是否存活(Running状态),如果LivenessProbe探针探测到容器不健康,则kubelet将杀掉该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenessProbe探针,那么kubelet认为改容器的LivenessProbe探针返回的值永远是Success。

2、ReadinessProbe探针:用于判断容器服务实发可用(Ready状态),达到Ready状态的Pod才可以接收请求。对于被Service管理的Pod,Service与Pod Endpoint的关联关系也将基于Pod是否Ready进行设置。如果在运行过程中Ready状态变为False,则系统自动将其从Service的后端Endpoint列表中隔离出去,后续再把恢复到Ready状态变为False,则系统的Pod加回后端Endpoint列表,这样就能保证客户端在访问Service时不会被转发到服务不可用的Pod实例上。

LivenessProbe和ReadinessProbe均可配置一下三种实现方式:

1.ExecAction:在容器内部执行一个命令,如果该命令的返回码为0,则表明容器健康。

举例:通过执行”cat /tmp/health“命令来判断一个容器运行是否正常。在改Pod运行后,将在创建/tmp/health文件10s后删除该文件,而LivenessProbe健康检查的初始探测时间(initialDelaySeconds)为15s,探活结果是Fail,将导致kubelet杀掉该容器并重启它。

apiVersion: v1

kind: Pod

metadata:

  labels:

    test: liveness

  name: liveness-exec

spec:

  containers:

    - name: liveness

      image: gcr.io/google_container/busybox

      args:

      - /bin/sh

      - -c

      - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600

      livenessProbe:

        exec:

          command:

          - cat

          - /tmp/health

        initialDelaySeconds: 15

        timeoutSeconds: 1 

2.TCPSocketAction:通过容器的IP地址和端口号执行TCP检查,如果能够建立TCP连接,则表明容器健康。

举例:通过与容器内的localhost:80建立TCP连接进行健康检查

apiVersion: v1

kind: Pod

metadata:

  name: pod-with-healthcheck

spec:

  containers:

  - name: nginx

    image: nginx

    ports:

    - containersPort: 80

    livenessProbe:

      tcpSocket:

        port: 80

      initialDelaySeconds: 30

      timeoutSeconds: 1

3.HTTPGetAction:通过容器的IP地址、端口号及路径调用HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器健康。

举例:kubelet定时发送HTTP请求到localhost:80/_status/healthz来进行容器应用的健康检查

apiVersion: v1

kind: Pod

metadata:

  name: pod-with-healthcheck

spec:

  containers:

  - name: nginx

    image: nginx

    ports:

    - containerPort: 80

    livenessProbe:

      httpGet:

        path: /_status/healthz

        port: 80

      initalDelaySeconds: 30

      timeoutSeconds: 1

initialDelaySeconds: 启动容器后进行首次健康检查的等待时间,单位为s。

timeoutSeconds:健康检查发送请求后等待响应的超时时间,单位为s。当超时发生时,kubelet会认为容器已经无法提供服务。将会重启该容器。

Pod Readiness Gates(待整理)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值