AWS EKS Fargate因Metrics Server证书问题无法部署HPA求助
EKS Fargate环境下Metrics Server证书验证失败及kubectl top报错解决
问题现象
执行官方文档中的命令安装Metrics Server:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
后出现以下问题:
- Metrics Server日志报证书验证错误:
E0124 20:06:19.813199 1 scraper.go:149] "Failed to scrape node" err="Get "https://10.0.138.91:10250/metrics/resource": tls: failed to verify certificate: x509: certificate is valid for 127.0.0.1, not 10.0.138.91" node="fargate-ip-10-0-138-91.ec2.internal"
- 执行
kubectl top pods -A时返回服务不可用错误:
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get pods.metrics.k8s.io)
问题原因
EKS Fargate节点的kubelet证书仅将127.0.0.1设为证书的SAN(主题备用名称),而Metrics Server默认通过节点内部IP访问kubelet,导致证书域名与访问地址不匹配,触发验证失败。
解决步骤
- 编辑Metrics Server的Deployment配置:
kubectl edit deployment metrics-server -n kube-system
- 在容器的
args字段中添加两个参数:--kubelet-insecure-tls:跳过kubelet的TLS证书验证--kubelet-preferred-address-types=InternalIP:指定优先使用内部IP访问kubelet
修改后的配置片段示例:
containers: - args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-preferred-address-types=InternalIP - --kubelet-insecure-tls image: k8s.gcr.io/metrics-server/metrics-server:v0.6.4 imagePullPolicy: IfNotPresent name: metrics-server ... - 保存配置退出后,等待Metrics Server Pod自动重启。
- 验证修复效果:
- 查看Metrics Server日志确认无证书错误:
kubectl logs -n kube-system deployment/metrics-server - 执行
kubectl top pods -A测试,正常情况下会返回各Pod的资源使用数据。
- 查看Metrics Server日志确认无证书错误:
内容的提问来源于stack exchange,提问作者Desh Deepak Dhobi
相关产品推荐
相关产品推荐

