k8s生命周期---容器探测

健康检查

Kubernetes 作为一个面向应用的集群管理工具,需要确保容器在部署后确实处在正常的运行状态。

容器探测用于检测容器中的应用实例是否正常工作,是保障业务可用性的一种传统机制。如果经过探测,实例的状态不符合预期,那么kubernetes就会把该问题实例“摘除”,不承担业务流量。

Kubernetes 提供了两种探针(Probe,支持 exec、tcpSocket 和 http 方式) 来探测容器的状态:

Pod 通过两类探针检查容器的健康状态:

  1. LivenessProbe 探针

    存活性探针,用于判断容器是否健康,告诉 Kubelet 一个容器什么时候 处于不健康的状态。

    如果 LivenessProbe 探针探测到容器不健康,则 Kubelet 将删 除该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含 LivenessProbe 探针,那么 Kubelet 认为该容器的 LivenessProbe 探针返回的值永 远是 “Success”。Kubelet 定期调用容器中的 LivenessProbe 探针来诊断容器的健康状况。

  2. ReadinessProbe 探针

    就绪性探针,用于判断容器是否启动完成且准备接收请求。

    如果 ReadinessProbe 探针探测到失败,则 Pod 的状态将被修改(连续探测3次之后Ready状态不可用,STATUS状态变为Complete)。Endpoint Controller 将从 Service 的 Endpoint 中删除包含该容器所在 Pod 的 IP 地址的 Endpoint 条目。

livenessProbe 决定是否重启容器,readinessProbe 决定是否将请求转发给容器

探针是由 kubelet 对容器执行的定期诊断。要执行诊断,kubelet 调用由容器实现的 Handler。探针的三种类型处理方式:

  • Exec:在容器内部执行一个命令,如果该命令的退出状态码为 0,则表明容器健康;
……
  livenessProbe:  # 两种探针写法一致
    exec:
      command:
      - cat
      - /tmp/healthy
……
  • tcpSocket:通过容器的 IP 地址和端口号执行 TCP 检查,如果端口能被访 问,则表明容器健康;
……
  livenessProbe:  # 两种探针写法一致
    tcpSocket:
      port: 8080
……
  • httpGet:通过容器的 IP 地址和端口号及路径调用 HTTP GET 方法,如果 响应的状态码大于等于 200 且小于 400,则认为容器状态健康。
……
  livenessProbe:  # 两种探针写法一致
    httpGet:
      path: /  # URI地址
      port: 80  # 端口号
      host: 127.0.0.1  # 主机地址
      scheme: HTTP  # 支持的协议 HTTP或HTTPS
……

LivenessProbe 和 ReadinessProbe 探针包含在 Pod 定义的 spec.containers.{某个容器} 中。这两个探针除了上述三种方式的子属性,还有同样的子属性:

[root@k8s-master ~]# kubectl explain pod.spec.containers.livenessProbe/readinessProbe
KIND:     Pod
VERSION:  v1
RESOURCE: livenessProbe <Object> / readinessProbe <Object>
FIELDS:   
   exec	<Object>
   httpGet	<Object>
   tcpSocket	<Object>
   initialDelaySeconds	<integer>   # 容器启动后等待多少秒执行第一次探测
   timeoutSeconds	<integer>       # 探测超时时间。默认1秒,最小1秒
   periodSeconds	<integer>       # 执行探测的频率。默认是10秒,最小
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值