Kubernetes HPA执行kubectl get hpa出现Unknown target问题求助
Kubernetes HPA target字段显示Unknown排查方案
- 验证metrics-server运行状态
执行kubectl get apiservice v1beta1.metrics.k8s.io,确认STATUS字段为Available。如果状态异常,优先排查metrics-server启动参数:测试环境可添加--kubelet-insecure-tls跳过kubelet证书校验,同时配置--kubelet-preferred-address-types=InternalIP避免节点域名解析失败问题,生产环境建议替换为正规签发的证书。 - 验证指标采集能力
执行kubectl top nodes和kubectl top pods,如果命令可正常返回节点、Pod的CPU/内存使用率数据,说明metrics-server数据链路正常,问题出在HPA配置侧;如果命令报错,回到上一步重新排查metrics-server的配置、网络连通性问题。 - 检查工作负载的资源请求配置
HPA的使用率计算是基于Pod的resources.requests值做的,如果HPA关联的Deployment/StatefulSet的Pod模板未配置对应资源的request值,就无法计算使用率,导致target显示Unknown。可执行kubectl describe hpa <hpa名称>查看Events字段,通常会明确提示missing request for cpu或missing request for memory类错误。 - 检查HPA API版本兼容性
K8s 1.18及以上版本推荐使用autoscaling/v2版本的HPA配置,老旧的autoscaling/v1版本在配合部分指标规则时可能出现兼容性问题,优先使用稳定版API编写HPA配置。 - 检查RBAC权限配置
确认metrics-server对应的ClusterRole、ClusterRoleBinding配置正确,具备访问kubelet metrics接口的权限,同时HPA控制器有调用metrics接口获取指标数据的权限。
内容的提问来源于stack exchange,提问作者Narayanan Kutty
相关产品推荐
相关产品推荐

