You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS部署Metrics Server后HPA无法获取CPU/内存指标问题

解决EKS中Metrics Server无法为HPA提供CPU/内存指标的问题

我帮你梳理下EKS里Metrics Server配合HPA出问题的常见解决思路,你遇到的这个报错核心是Metrics Server没法从kubelet拿到节点/容器的指标数据,虽然你已经加了--kubelet-insecure-tls这类参数,但还有几个关键点要逐一排查:

1. 先确认Metrics Server自身的运行状态

首先得确保Metrics Server Pod本身没挂,再看看日志里有没有更具体的错误信息:

# 查看Metrics Server Pod状态
kubectl get pods -n kube-system | grep metrics-server
# 查看Pod日志,找连接kubelet失败的细节
kubectl logs -n kube-system <你的metrics-server-pod-name>

如果日志里出现x509: certificate signed by unknown authority或者kubelet连接超时的信息,那大概率是TLS配置或者网络连通性的问题。

2. 检查Metrics Server到kubelet的网络连通性

EKS的kubelet默认用10250端口提供指标,你已经加了--kubelet-insecure-tls绕过证书验证,但得先确认Metrics Server能通到节点的这个端口。可以在Metrics Server Pod里直接测试:

kubectl exec -n kube-system <你的metrics-server-pod-name> -- curl -k https://<节点内部IP>:10250/stats/summary

如果返回一堆JSON格式的节点指标数据,说明网络和kubelet是正常的;如果超时或者报错,得去检查EKS的安全组配置,确保节点之间允许10250端口的入站流量。

3. 修正Metrics Server的启动参数配置

你当前的配置里command和args混用了,这会导致部分参数没生效!Kubernetes里如果用command覆盖了容器的默认启动命令,args里的参数不会被自动传递,得把所有参数都放到command里:

containers:
  - name: metrics-server
    image: k8s.gcr.io/metrics-server/metrics-server:v0.3.7
    imagePullPolicy: IfNotPresent
    command:
      - /metrics-server
      - --kubelet-insecure-tls=true
      - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
      - --v=2
      - --cert-dir=/tmp
      - --secure-port=4443

之前args里的参数相当于白写了,Metrics Server根本没读到,这很可能是问题根源之一。

4. 验证Metrics API是否正常提供数据

Metrics Server启动后会注册metrics.k8s.io API,直接调用这个API就能确认指标能不能正常获取:

# 获取节点指标
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
# 获取Pod指标
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/pods"

如果这两个命令能返回正常的指标JSON,说明Metrics Server已经工作了,HPA的报错可能是暂时的,等几分钟指标同步就好;如果返回404或者空数据,那还是得回到前面的步骤排查Metrics Server的启动问题。

5. 检查HPA关联的Pod资源配置

HPA要获取CPU/内存利用率,前提是对应的Pod必须定义了resources.requests和resources.limits,比如:

resources:
  requests:
    cpu: "100m"
    memory: "128Mi"
  limits:
    cpu: "200m"
    memory: "256Mi"

如果Pod没配置这些资源请求,Metrics Server根本没法收集到对应的利用率指标,HPA自然会报错。

6. 考虑升级Metrics Server版本

v0.3.7是比较老的版本了,可能和新的EKS Kubernetes版本存在兼容性问题,建议升级到较新的稳定版(比如v0.6.4),新版本修复了很多kubelet通信的细节问题,配置也更简洁。

按照上面的步骤逐一排查,应该能解决HPA无法获取Metrics Server指标的问题。

内容的提问来源于stack exchange,提问作者Vikas Rathore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:48:02