news 2026/4/25 18:40:18

Kuberhealthy 开发指南:如何为你的应用程序创建自定义检查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kuberhealthy 开发指南:如何为你的应用程序创建自定义检查

Kuberhealthy 开发指南:如何为你的应用程序创建自定义检查

【免费下载链接】kuberhealthyA Kubernetes operator for running synthetic checks as pods. Works great with Prometheus!项目地址: https://gitcode.com/gh_mirrors/ku/kuberhealthy

Kuberhealthy 是一款强大的 Kubernetes 操作器,能够以 Pod 形式运行合成检查,与 Prometheus 配合使用效果极佳。本文将为你提供创建自定义检查的完整指南,帮助你监控应用程序的关键指标和运行状态。

为什么需要自定义检查?

Kuberhealthy 设计初衷就是为了方便扩展,任何人都可以编写自定义检查容器来监控任何内容。这些检查可以用任何语言编写,只要能打包成容器即可。这使得 Kuberhealthy 成为创建自定义合成检查的理想平台!

Kuberhealthy 检查示例图:Kuberhealthy 检查示例展示了如何直观地监控应用程序状态

自定义检查的基本要求

无论使用哪种编程语言,你的检查只需要完成以下几件事:

  1. 读取KH_REPORTING_URL环境变量
  2. 向该 URL 发送 POST 请求,包含以下 JSON 体:
    { "Errors": ["错误信息1", "错误信息2"], "OK": false }
  3. 确保在KH_CHECK_RUN_DEADLINE环境变量指定的截止时间前完成检查

注意:如果Errors数组有值,切勿将"OK": true设为 true,否则会收到 400 错误响应。

使用 Go 创建自定义检查

如果你使用 Go,可以利用我们提供的客户端包:checkclient

简单示例代码

package main import ( "github.com/kuberhealthy/kuberhealthy/v2/pkg/checks/external/checkclient" ) func main() { ok := doCheckStuff() if !ok { checkclient.ReportFailure([]string{"Test has failed!"}) return } checkclient.ReportSuccess() }

带有 Dockerfile 的完整示例可参考 test-check。

使用 JavaScript 创建自定义检查

参考示例

JavaScript 检查的示例客户端位于 clients/js/ 目录下。你可以查看同一文件夹下的 example 目录,其中包含带有 Dockerfile 的完整示例。

NPM 包

Kuberhealthy 提供了 NPM 包,支持 async/await 以及自定义主机和端口:

npm i --save kuberhealthy

简单示例代码

const kh = require('kuberhealthy') const report = async () => { let ok = await doCheckStuff() if (ok) { await kh.ReportSuccess() } else { await kh.ReportFailure() } } report()

注意:环境变量 KH_REPORTING_URL 必须设置。如果在 Kubernetes 上作为 'khcheck' 运行,这通常会自动完成。

使用其他语言创建自定义检查

对于其他语言,你需要手动处理 HTTP 请求。以下是检查 Pod 中会自动注入的环境变量:

  • KH_REPORTING_URL: 用于发送检查状态的 Kuberhealthy URL
  • KH_CHECK_RUN_DEADLINE: 检查的截止时间(Unix 时间)
  • KH_RUN_UUID: 检查运行的 UUID,必须作为 'kh-run-uuid' 头发送
  • KH_POD_NAMESPACE: 检查 Pod 所在的命名空间

你可以在 clients 目录 中找到更多语言的客户端示例。

创建 khcheck 资源

每个检查都需要一个khcheck资源来启用和配置。应用此资源后,Kuberhealthy 将立即开始运行你的检查。

最小化 khcheck 资源示例

apiVersion: comcast.github.io/v1 kind: KuberhealthyCheck metadata: name: kh-test-check spec: runInterval: 30s # 检查运行间隔 timeout: 2m # 超时时间,超过后检查将被视为失败 podSpec: # 要运行的 Pod 规范 containers: - env: # 环境变量(可选,但推荐用于配置检查行为) - name: MY_OPTION_ENV_VAR value: "option_setting_here" image: quay.io/comcast/test-check:latest # 你推送的检查镜像 imagePullPolicy: Always # 开发期间设置为 'Always' 可防止节点镜像缓存 name: main

应用此khcheck后,Kuberhealthy 将开始运行你的检查,提供 Prometheus 指标,并在状态页面上显示状态 JSON。

图:Kuberhealthy 部署检查演示了检查如何在 Kubernetes 集群中运行

检查部署与验证

部署自定义检查后,你可以通过以下方式验证其是否正常工作:

  1. 检查 Kuberhealthy 状态页面,查看检查结果
  2. 查看 Prometheus 指标,确认检查数据已正确收集
  3. 检查检查 Pod 的日志,排查可能的问题

贡献你的检查

如果你创建了可能对他人有用的检查,可以考虑将其添加到 检查注册表 中!只需 fork 此仓库并发送 PR 即可。

图:Kuberhealthy JSON 输出示例展示了检查结果的结构化数据

总结

通过本文的指南,你已经了解了如何为 Kuberhealthy 创建自定义检查。无论是使用 Go、JavaScript 还是其他语言,都可以轻松扩展 Kuberhealthy 的监控能力,为你的应用程序提供定制化的健康检查解决方案。

开始创建你的第一个自定义检查吧,让 Kuberhealthy 更好地为你的 Kubernetes 集群服务!更多详细信息,请参阅官方文档 docs/CHECK_CREATION.md。

【免费下载链接】kuberhealthyA Kubernetes operator for running synthetic checks as pods. Works great with Prometheus!项目地址: https://gitcode.com/gh_mirrors/ku/kuberhealthy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 18:39:48

pmu-tools疑难问题排查:常见错误与解决方案汇总

pmu-tools疑难问题排查:常见错误与解决方案汇总 【免费下载链接】pmu-tools Intel PMU profiling tools 项目地址: https://gitcode.com/gh_mirrors/pm/pmu-tools pmu-tools是Intel PMU profiling工具集,用于性能分析和事件监控。在使用过程中&am…

作者头像 李华
网站建设 2026/4/25 18:38:52

MLE-Flashcards大语言模型专题:LLM和VLM闪卡深度解析

MLE-Flashcards大语言模型专题:LLM和VLM闪卡深度解析 【免费下载链接】MLE-Flashcards 200 detailed flashcards useful for reviewing topics in machine learning, computer vision, and computer science. 项目地址: https://gitcode.com/gh_mirrors/ml/MLE-Fl…

作者头像 李华
网站建设 2026/4/25 18:38:35

Android SQLite Asset Helper错误处理:常见问题与解决方案大全

Android SQLite Asset Helper错误处理:常见问题与解决方案大全 【免费下载链接】android-sqlite-asset-helper An Android helper class to manage database creation and version management using an applications raw asset files 项目地址: https://gitcode.c…

作者头像 李华
网站建设 2026/4/25 18:38:34

Power BI学习笔记第16篇:Power BI 示例一览

Power BI 示例一览 摘要 本文摘自微软Power BI官方示例库,目前一共有17篇。此篇借助工具将17个主页的截图汇总在了一起,方便后续在设计Dashboard的时候,能从中获取一些灵感。 来源:https://learn.microsoft.com/zh-cn/power-bi/…

作者头像 李华
网站建设 2026/4/25 18:38:32

EasyRec完整指南:从零开始掌握工业级推荐系统开发

EasyRec完整指南:从零开始掌握工业级推荐系统开发 【免费下载链接】EasyRec A framework for large scale recommendation algorithms. 项目地址: https://gitcode.com/gh_mirrors/ea/EasyRec EasyRec是一款功能强大的工业级推荐系统框架,旨在帮助…

作者头像 李华
网站建设 2026/4/25 18:37:23

技术组合的整体部分关系处理

技术组合的整体部分关系处理:构建高效协同的生态体系 在当今快速发展的技术领域,单一技术往往难以满足复杂需求,技术组合的协同应用成为解决问题的关键。技术组合并非简单堆砌,而是通过整体与部分的有机整合,实现功能…

作者头像 李华