如何自定义Go语言HPA指标实现Golang在K8s中的自动扩缩容策略?
- 内容介绍
- 文章标签
- 相关推荐
本文共计942个文字,预计阅读时间需要4分钟。
由于K8s默认只支持CPU和memory这两种资源指标,你填写了customMetrics或externalMetrics字段,但集群未安装相应适配器,HPA控制器无法理解这些指标——它将静默跳过这些指标,或者报错FailedGetCustomMetric。
实操建议:
立即学习“go语言免费学习笔记(深入)”;
- 先确认是否已部署
metrics-server(仅够用 CPU/memory);自定义指标必须额外部署prometheus-adapter或k8s-prometheus-adapter - 检查 HPA 的
apiVersion:用自定义指标必须是autoscaling/v2或更高,v1版本完全不识别customMetrics - 验证指标是否真正可查:运行
kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/default/pods/*/http_requests_total",看是否返回数据
Go 服务如何暴露 Prometheus 指标供 HPA 使用
HPA 本身不拉指标,它靠 prometheus-adapter 去查 Prometheus,再把结果转成 K8s API 格式。所以你的 Go 服务只需标准暴露指标,不用对接 HPA。
本文共计942个文字,预计阅读时间需要4分钟。
由于K8s默认只支持CPU和memory这两种资源指标,你填写了customMetrics或externalMetrics字段,但集群未安装相应适配器,HPA控制器无法理解这些指标——它将静默跳过这些指标,或者报错FailedGetCustomMetric。
实操建议:
立即学习“go语言免费学习笔记(深入)”;
- 先确认是否已部署
metrics-server(仅够用 CPU/memory);自定义指标必须额外部署prometheus-adapter或k8s-prometheus-adapter - 检查 HPA 的
apiVersion:用自定义指标必须是autoscaling/v2或更高,v1版本完全不识别customMetrics - 验证指标是否真正可查:运行
kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/default/pods/*/http_requests_total",看是否返回数据
Go 服务如何暴露 Prometheus 指标供 HPA 使用
HPA 本身不拉指标,它靠 prometheus-adapter 去查 Prometheus,再把结果转成 K8s API 格式。所以你的 Go 服务只需标准暴露指标,不用对接 HPA。

