Golang服务通过HTTP或Exec探针实现健康检查,HTTP方式暴露/healthz和/readyz接口供Kubernetes调用,支持依赖检测,Exec方式则通过命令退出码判断状态。

在 Kubernetes 等容器编排平台中,健康探针(Liveness、Readiness 和 Startup 探针)用于判断容器是否正常运行。Golang 服务通常通过暴露 HTTP 接口或执行本地命令来支持这些探针。下面介绍如何用 Golang 实现常见的健康检查机制。
实现 HTTP 健康检查接口
最常见的方式是启动一个 HTTP 服务,提供 /healthz(存活)和 /readyz(就绪)端点。
示例代码:
package mainimport ("net/http""log")
func livenessHandler(w http.ResponseWriter, r *http.Request) {w.WriteHeader(http.StatusOK)w.Write([]byte("OK"))}
func readinessHandler(w http.ResponseWriter, r *http.Request) {// 可在此加入依赖检查,如数据库连接// 如果依赖正常,返回 200;否则返回 500w.WriteHeader(http.StatusOK)w.Write([]byte("Ready"))}
func main() {http.HandleFunc("/healthz", livenessHandler)http.HandleFunc("/readyz", readinessHandler)
log.Println("Health server starting on :8080")if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal("Server failed:", err)}}
立即学习“go语言免费学习笔记(深入)”;
Kubernetes 中配置探针
在 Pod 的 YAML 配置中,引用上述接口:
livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 10 periodSeconds: 10readinessProbe:httpGet:path: /readyzport: 8080initialDelaySeconds: 5periodSeconds: 5
这样 Kubelet 会定期调用对应路径,根据返回状态码决定容器状态。
复杂依赖的就绪判断
如果服务依赖数据库或缓存,/readyz 应检查这些外部依赖是否可用。
瞬映
AI 快速创作数字人视频,一站式视频创作平台,让视频创作更简单。
57 查看详情
![]()
例如检查数据库连接:
func readinessHandler(w http.ResponseWriter, r *http.Request) { if err := db.Ping(); err != nil { http.Error(w, "Database unreachable", http.StatusServiceUnavailable) return } w.WriteHeader(http.StatusOK) w.Write([]byte("Ready"))}这样可以避免流量进入尚未准备好的实例。
使用命令行探针(Exec Probe)
也可通过执行二进制内部命令实现探针,适用于无法暴露 HTTP 端口的场景。
Golang 编译出的可执行文件可配合 exec 探针使用:
livenessProbe: exec: command: - ./myapp - check-alive initialDelaySeconds: 15在代码中处理 check-alive 子命令:
func main() { if len(os.Args) > 1 { switch os.Args[1] { case "check-alive": if isHealthy() { os.Exit(0) } else { os.Exit(1) } } return } // 正常启动服务}探针执行该命令,根据退出码判断健康状态。
基本上就这些。HTTP 方式更灵活,适合大多数 Web 服务;Exec 方式适合轻量或特殊环境。关键是让探针准确反映服务真实状态,避免误判。
以上就是如何使用Golang实现容器健康探针的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1123283.html
微信扫一扫
支付宝扫一扫