EKS集群中kube-prometheus-stack仅采集运行节点数据问题求助
解决EKS集群中kube-prometheus-stack仅能采集单节点数据的问题
检查kubelet证书与访问验证
先在Prometheus Pod里直接测试访问其他节点的kubelet 10250端口,确认证书验证是否正常:kubectl exec -it <你的prometheus-pod名称> -n <命名空间> -- curl -v https://<目标节点IP>:10250/metrics --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt如果返回证书错误,检查目标节点kubelet的
--tls-cert-file和--tls-private-key-file配置,确保证书由集群CA签发,或者Prometheus的tlsConfig里配置了正确的CA证书。排查节点网络连通性
尽管安全组已全开,但节点本地防火墙(比如iptables、firewalld)可能拦截10250端口流量:- 在目标节点上检查iptables规则:
确保存在允许10250端口入站的规则。iptables -L INPUT -n | grep 10250 - 在Prometheus所在节点用telnet测试端口连通性:
如果连接失败,优先解决节点间的网络可达问题。telnet <目标节点IP> 10250
- 在目标节点上检查iptables规则:
验证kube-prometheus-stack的kubelet采集配置
检查Helm安装的ServiceMonitor是否正确配置了kubelet采集规则:- 查看kubelet对应的ServiceMonitor资源:
kubectl get servicemonitor -n <命名空间> kube-prometheus-stack-kubelet -o yaml - 确认
endpoints配置里的port为https-metrics,scheme设为https,且tlsConfig中正确引用了集群CA证书(例如caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt)。 - 若安装时自定义了参数,确保
kubelet.serviceMonitor.enabled设置为true。
- 查看kubelet对应的ServiceMonitor资源:
检查Prometheus的RBAC权限
确认Prometheus的ServiceAccount有权限访问节点metrics:kubectl get clusterrole kube-prometheus-stack-prometheus -o yaml确保ClusterRole包含以下规则:
- apiGroups: [""] resources: ["nodes/metrics"] verbs: ["get"]若缺少该规则,需要更新ClusterRole或重新安装Chart时确保权限配置正确。
检查目标节点的kubelet状态
在问题节点上确认kubelet是否正常监听10250端口:- 查看kubelet运行日志:
journalctl -u kubelet | grep 10250 - 检查端口监听情况:
netstat -tulpn | grep kubelet
确保kubelet无异常,10250端口处于正常监听状态。
- 查看kubelet运行日志:
内容的提问来源于stack exchange,提问作者Morteza Malekabadi
相关产品推荐
相关产品推荐

