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 检查示例展示了如何直观地监控应用程序状态
自定义检查的基本要求
无论使用哪种编程语言,你的检查只需要完成以下几件事:
- 读取
KH_REPORTING_URL环境变量 - 向该 URL 发送 POST 请求,包含以下 JSON 体:
{ "Errors": ["错误信息1", "错误信息2"], "OK": false } - 确保在
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 URLKH_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 集群中运行
检查部署与验证
部署自定义检查后,你可以通过以下方式验证其是否正常工作:
- 检查 Kuberhealthy 状态页面,查看检查结果
- 查看 Prometheus 指标,确认检查数据已正确收集
- 检查检查 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),仅供参考