17、Health Check 健康检查

本文详细介绍了Kubernetes中的自愈能力和健康检查机制,包括Liveness探测和Readiness探测的原理与配置,以及它们在零停机部署、避免无效镜像、安全滚动升级等方面的应用。通过实例展示了如何通过探测方法如exec、httpGet、tcpSocket来定制健康检查,并在滚动更新和扩展操作中确保服务稳定。
强大的自愈能力是kubernetes容器编排引擎的重要特性。 自愈的默认实现方式是自动重启发生故障的容器。除此之外,还可通过 Liveness和Readiness探测机制设置更精细的健康检查,进而实现如下要求:
  1. 零停机部署
  2. 避免部署无效的镜像
  3. 更加安全的滚动升级

一、Liveness探测 VS Readiness探测

  1. Liveness探测和Readiness探测是两种healthy check机制,若不特意配置,kubernetes将对两种探测采取相同的默认行为,即通过判断容器启动进程的返回值( echo $?)是否为零来判断探测是否成功。
  2. 两种探测的配置方法完全一样,支持的配置参数也一样。 不同之处在于探测失败后的行为:Liveness 探测是重启容器;Readiness 探测则是将容器设置为不可用,不接收 Service 转发的请求
  3. Liveness 探测和 Readiness 探测是独立执行的,二者之间没有依赖,所以 可以单独使用,也可以同时使用用 Liveness 探测判断容器是否需要重启以实现自愈;用 Readiness 探测判断容器是否已经准备好对外提供服务

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

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

1.2、探针探测的结果

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

1.3、Pod 重启策略 restartpolicy

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

二、默认的健康检查

每个容器启动时都会执行一个进程,此进程由Dockerfile的CMD或ENTRYPOINT指定。如果 进程退出时返回码非零,则认为容器发生故障,kubernetes会根据restartPolicy重启容器。
模拟容器发生故障的场景,Pod配置文件如下:
apiVersion: v1
k
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值