Kubernetes HPA 配了 CPU 阈值却不扩容,六个常见原因

举报
yd_216394844 发表于 2026/10/29 02:01:05 2026/10/29
【摘要】 HPA 显示 Targets 一直是 low,副本数不动,多数不是 HPA 本身的问题,按这六条排查基本能定位。第一,metrics 根本没取到。kubectl top pod 如果报 error,说明 metrics-server 没装好或者证书有问题,HPA 拿不到指标只会显示 unknown,不会扩容。先确认 metrics-server 的 Pod 是 Running,再用 kube...

HPA 显示 Targets 一直是 low,副本数不动,多数不是 HPA 本身的问题,按这六条排查基本能定位。

第一,metrics 根本没取到。kubectl top pod 如果报 error,说明 metrics-server 没装好或者证书有问题,HPA 拿不到指标只会显示 unknown,不会扩容。先确认 metrics-server 的 Pod 是 Running,再用 kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes 试一下。

第二,CPU request 没设。HPA 算的是使用率百分比,分母是 request。request 缺失时这个百分比算不出来,HPA 直接失效。这类问题最隐蔽,因为 Pod 跑得好好的,只是永远不扩容。

第三,指标采集有延迟。默认 metrics 每 15 秒采一次,HPA 还有默认 300 秒的缩容稳定窗口。刚压上去没反应属正常,等两三分钟再看。

第四,副本数撞上 maxReplicas。很多人把 maxReplicas 设成 3 做测试,压测起来一直是 3,看起来像没扩容,其实早到顶了。

第五,Pod 还没 Ready。HPA 只统计 Ready 的 Pod,新 Pod 卡在 ImagePullBackOff 或者探针一直失败,就永远补不上。

第六,集群资源不够。HPA 扩容只是改 ReplicaSet 的期望副本数,调度器没节点可放就只能 Pending。用 kubectl describe pod 看 Events,出现 FailedScheduling 就是节点容量问题,这时该上 cluster-autoscaler,不是继续调 HPA。

补一句:如果要按 QPS 或者队列长度扩容,CPU 指标根本不够用,得上 Prometheus Adapter 把自定义指标喂给 HPA,或者干脆换 KEDA。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。