Liveness探针用/healthz端点检查进程存活,Readiness探针用/readyz端点检查服务就绪;前者轻量无依赖,后者验证外部依赖与初始化状态;均需200表示通过,避免阻塞。
在 Go 应用中实现 Kubernetes 的 Readiness 和 Liveness 探针,核心是暴露两个独立的 HTTP 端点,分别返回不同语义的健康状态,且逻辑要严格区分:Liveness 判断进程是否“还活着”,Readiness 判断服务是否“可接收流量”。
不要复用同一个接口。推荐路径如下:
两者都应返回 200 OK 表示通过,非 200(如 503)表示失败。K8s 默认超时 1 秒、失败阈值 3 次,建议在 handler 中避免阻塞或长耗时操作。
Liveness 必须快、稳、不依赖外部系统。一个典型实现:
http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
// 只做最基础检查:时间是否正常、内存是否严重告警(可选)
if time.Since(startTime) < 0 {
http.Error(w, "clock skew detected", http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
w.Write([]byte("ok"))
})⚠️ 注意:不要在这里查 DB 或 Redis —— 它挂了应该触发重启(Liveness 失败),而不是让整个探针变慢或误判。
Readiness 要反映真实服务能力。常见检查项:
SELECT 1 或检查连接池状态)示例片段:
var dbReady = atomic.Bool{
}
// 启动时异步检查 DB 并设置标志
go func() {
for i := 0; i < 3; i++ {
if err := db.Ping(); err == nil {
dbReady.Store(true)
return
}
time.Sleep(2 * time.Second)
}
}()
http.HandleFunc("/readyz", func(w http.ResponseWriter, r *http.Request) {
if !dbReady.Load() {
http.Error(w, "database not ready", http.StatusServiceUnavailable)
return
}
w.WriteHeader(http.StatusOK)
w.Write([]byte("ready"))
})
关键参数要匹配 Go 服务实际行为:
httpGet 指向 /healthz,initialDelaySeconds: 10(给应用冷启动留时间)/readyz,initialDelaySeconds: 5(可比 liveness 更早开始)timeoutSeconds: 2、periodSeconds: 5,避免默认 1 秒超时导致频繁失败示例片段:
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
timeoutSeconds: 2
periodSeconds: 5
readinessProbe:
httpGet:
path: /readyz
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 2
periodSeconds: 5基本上就这些。重点不是写得多,而是两个探针职责分明:Liveness 守住进程底线,Readiness 把控流量入口。不复杂但容易忽略 —— 很多线上问题其实源于 readiness 检查太松(一直 200 却实际不可用)或太紧(依赖抖动就切走流量)。
# redis
# go
# golang
# ai
# kubernetes
# red
# select
# 接口
# etcd
# 数据库
# http
# 加载
# 连接池
# 在这里
# 可用性
# 得多
# 线上
# 可选
# 挂了
# 重启
# 只做
相关文章:
深圳网站制作的公司有哪些,dido官方网站?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
网站制作的步骤包括,正确网址格式怎么写?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
c# await 一个已经完成的Task会发生什么
如何在IIS中新建站点并配置端口与IP地址?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
电商网站制作公司有哪些,1688网是什么意思?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
零服务器AI建站解决方案:快速部署与云端平台低成本实践
建站主机默认首页配置指南:核心功能与访问路径优化
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
高防服务器租用指南:配置选择与快速部署攻略
如何在建站主机中优化服务器配置?
如何在建站之星绑定自定义域名?
如何在自有机房高效搭建专业网站?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
临沂网站制作公司有哪些,临沂第四中学官网?
建站之星导航配置指南:自助建站与SEO优化全解析
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何破解联通资金短缺导致的基站建设难题?
如何在万网开始建站?分步指南解析
建站之星代理费用多少?最新价格详情介绍
如何用PHP快速搭建CMS系统?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
建站之星2.7模板快速切换与批量管理功能操作指南
建站之星微信建站一键生成小程序+多端营销系统
XML的“混合内容”是什么 怎么用DTD或XSD定义
公众号网站制作网页,微信公众号怎么制作?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
如何选择香港主机高效搭建外贸独立站?
开源网站制作软件,开源网站什么意思?
创业网站制作流程,创业网站可靠吗?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
如何选择PHP开源工具快速搭建网站?
存储型VPS适合搭建中小型网站吗?
PHP正则匹配日期和时间(时间戳转换)的实例代码
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
建站之星后台管理:高效配置与模板优化提升用户体验
宝塔新建站点为何无法访问?如何排查?
活动邀请函制作网站有哪些,活动邀请函文案?
怎么将XML数据可视化 D3.js加载XML
如何快速使用云服务器搭建个人网站?
建站之星如何一键生成手机站?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何实现建站之星域名转发设置?
*请认真填写需求信息,我们会在24小时内与您取得联系。