能否将HPA绑定自定义APIService替代默认v1beta1.custom.metrics.k8s.io
HPA对接自定义专属APIService方案说明
可行性结论
该方案完全可行,无需修改现有默认绑定的v1beta1.custom.metrics.k8s.io APIService配置,也不会影响集群内其他业务对原有自定义指标服务的使用。
核心实现逻辑
- 你自行搭建的自定义指标服务注册APIService时,可使用自定义的API组名与版本,例如
v1beta1.my-custom-metrics.k8s.io,只要不和集群内已有的APIService资源冲突即可,不需要强制使用官方默认的custom.metrics.k8s.io组。 - 配置目标命名空间下的HPA资源时,直接在指标规则中指定你自定义的APIService版本即可,示例配置如下:
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: biz-app-hpa namespace: your-namespace spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: biz-app minReplicas: 2 maxReplicas: 15 metrics: - type: Pods # 显式指定自定义指标的API版本,即你自建APIService的组版本 apiVersion: my-custom-metrics.k8s.io/v1beta1 pods: metric: name: biz_qps target: type: AverageValue averageValue: 2000
- 权限配置仅需要给HPA控制器添加自定义指标API组的访问权限即可,无需调整原有指标服务的任何权限配置。
注意事项
- 必须使用
autoscaling/v2及以上版本的HPA,旧版本autoscaling/v1不支持自定义指标配置,也无法指定自定义API版本。 - 自建的自定义指标服务需要符合Kubernetes自定义指标API规范,返回的指标数据格式需要和你注册的APIService版本要求匹配。
内容的提问来源于stack exchange,提问作者YerivanLazerev
相关产品推荐
相关产品推荐

