十、k8s健康检查之 livenessProbe/readinessProbe

本文介绍了Kubernetes中的健康检查机制,包括livenessProbe和readinessProbe,用于监控应用的运行状态。通过exec、tcp和httpGet三种方式执行探针,确保应用在初始化完成前不接收流量,并在出现问题时及时重启。文中详细讨论了各种探针的配置和使用场景,强调了初始延迟和周期设置的重要性,以避免因应用启动时间不同导致的误判。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

健康检查


 一个pod启动了之后,它有可能还在做初始化,这就意味着在初始化的应用进程还不能接受网络流量,所以要去控制一下pod的状态,也就是我还没有就绪,我还不能够接受流量。

有些应用跑着跑着没有响应,出现大量的503,应用实例以及不能够正常工作了,是否需要帮你重启。

tcp stocket  查看某个端口,比如某个应用跑在80端口上面,你只需要去看80端口是否是活着的,你就能够知道它是否就绪了。

但是有时候80端口启动了并不代表我业务正常了,可能应用已经死掉了,那么可以通过HTTP,任何的微服务里面都要开放healthz的健康检查的uri,我们就可以针对uri去做健康检查。

如果这个文件存在,那么会返回code为0,这样就认为健康检查是通过的,如果这个文件不存在,那么这个return code为非0,也就是这次健康检查会失败。

Kubernetes三种探针


k8s支持存活livenessProbe和就绪readinessProbe两种探针,两种探针都支持以下三种方式

一、exec

通过执行shell命令的方式,判断退出状态码是否是0,示例:

      exec:
     

### Kubernetes 健康检查脚本示例 #### HTTP GET 方法 当使用 `HTTP Get` 进行健康检查时,通常会在应用程序中设置一个端点来响应请求。下面是一个简单的 Python Flask 应用程序作为例子: ```python from flask import Flask, jsonify app = Flask(__name__) @app.route('/healthz') def health_check(): try: # 执行必要的健康检查逻辑 status = {"status": "UP"} return jsonify(status), 200 except Exception as e: error_status = {"error": str(e)} return jsonify(error_status), 500 if __name__ == '__main__': app.run(host='0.0.0.0', port=8080) ``` 此代码创建了一个名为 `/healthz` 的路由用于返回 JSON 格式的健康状态信息[^4]。 #### Container Exec 方式 对于某些不提供 Web API 访问的服务来说,可以采用 `ExecAction` 来执行自定义命令验证服务的状态。这里给出一段 Bash Shell 脚本的例子: ```bash #!/bin/bash # 检查 MySQL 数据库连接状况 mysqladmin ping -h localhost --silent || exit 1 exit 0 ``` 这段脚本尝试向本地主机上的 MySQL 实例发送 PING 请求;如果失败则退出并报告错误码 1 表明服务不可用[^5]。 #### TCP Socket 测试 有时只需要确认监听指定端口的服务是否正在运行即可满足需求,在这种情况下可利用 netcat 工具完成测试工作: ```bash nc -zv localhost 9090 ``` 上述命令用来检测是否有进程绑定了地址为 `localhost`, 端口号为 `9090` 的套接字接口。成功建立连接意味着目标服务处于活动状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

k8s小王

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值