在Amazon EKS中安装metrics-server遇部署无效问题求助
解决Amazon EKS 1.24中Metrics Server部署失败的问题
问题场景
在版本1.24的Amazon EKS集群中,使用kubectl 1.25执行官方命令安装Metrics Server时失败:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
返回核心错误:
The Deployment "metrics-server" is invalid: spec.template.spec.containers[0].ports[1].name: Duplicate value: "https"
同时执行k top nodes命令时返回服务不可用:
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
原因分析
通过curl获取官方YAML文件时,输出中混入了* TLSv1.2 (IN), TLS header, Supplemental data (23):这类无关的TLS日志内容,导致YAML结构被破坏,解析时出现端口名称重复的错误。
解决步骤
1. 清理已创建的无效资源
先移除之前部署的不完整资源:
kubectl delete -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
如果上述命令执行失败,可手动删除相关资源:
kubectl delete sa metrics-server -n kube-system kubectl delete clusterrole system:aggregated-metrics-reader system:metrics-server kubectl delete rolebinding metrics-server-auth-reader -n kube-system kubectl delete clusterrolebinding metrics-server:system:auth-delegator system:metrics-server kubectl delete svc metrics-server -n kube-system kubectl delete deployment metrics-server -n kube-system kubectl delete apiservice v1beta1.metrics.k8s.io
2. 下载完整的YAML配置文件
使用-s参数屏蔽curl的冗余输出,确保下载的YAML文件纯净:
curl -sL https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml > metrics-server-components.yaml
打开文件检查,确认没有TLS相关的干扰文本,YAML结构完整。
3. 适配EKS环境调整配置(关键步骤)
EKS集群的kubelet使用自签名证书,需要给Metrics Server添加跳过证书验证的参数。编辑metrics-server-components.yaml,在metrics-server容器的args列表中添加--kubelet-insecure-tls:
containers: - args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname - --kubelet-use-node-status-port - --metric-resolution=15s - --kubelet-insecure-tls # 添加该行 image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2
4. 重新部署Metrics Server
kubectl apply -f metrics-server-components.yaml
5. 验证部署结果
等待Pod启动完成后,执行以下命令确认状态:
# 检查Metrics Server Pod是否正常运行 kubectl get pods -n kube-system | grep metrics-server # 验证节点指标是否可获取 kubectl top nodes
内容的提问来源于stack exchange,提问作者david.perez
相关产品推荐
相关产品推荐

