VirtualBox仅主机网络下Lens显示K8s节点/Pod metrics问题排查
仅主机模式下K8s Metrics恢复方案
1. 先排查节点底层网络连通性
- 所有节点(master/worker)互相ping对方的仅主机IP,确认基础网络可达:
ping <目标节点仅主机IP> - 验证kubelet的metrics端口(默认10250)跨节点可访问:
curl https://<目标节点仅主机IP>:10250/metrics/cadvisor -k注:kubelet默认用HTTPS,加
-k忽略证书验证,能返回metrics数据则端口连通正常。
2. 修正Node-Exporter的网络配置
- 先检查node-exporter的Pod状态:
kubectl get pods -n monitoring -l app=node-exporter - 确保node-exporter启用主机网络模式,仅主机模式下主机网络能直接绑定节点的仅主机IP,避免ClusterIP转发故障:
编辑node-exporter的Deployment:
添加或修改以下配置:kubectl edit deployment node-exporter -n monitoringspec: template: spec: hostNetwork: true dnsPolicy: ClusterFirstWithHostNet
3. 修复Prometheus的采集链路
- 进入Prometheus Pod,测试能否访问node-exporter和kubelet的metrics端点:
kubectl exec -it <prometheus-pod-name> -n monitoring -- curl <节点仅主机IP>:9100/metrics kubectl exec -it <prometheus-pod-name> -n monitoring -- curl https://<节点仅主机IP>:10250/metrics/cadvisor -k - 若通过Service名称访问失败,检查CoreDNS解析是否正常:
解析失败就重启CoreDNS:kubectl exec -it <prometheus-pod-name> -n monitoring -- nslookup node-exporter.monitoring.svc.cluster.localkubectl rollout restart deployment coredns -n kube-system
4. 确保Service CIDR与仅主机子网无冲突
- 查看当前集群的Service CIDR:
kubectl cluster-info dump | grep service-cluster-ip-range若该CIDR和VirtualBox仅主机网络的子网重叠,需重新初始化集群并指定无冲突的Service CIDR,比如:
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.100.0.0/12
5. 修复kubectl top依赖的metrics-server
- 检查metrics-server的运行状态和日志:
kubectl get pods -n kube-system -l k8s-app=metrics-server kubectl logs <metrics-server-pod-name> -n kube-system - 若因证书问题无法访问kubelet,给metrics-server添加跳过证书验证的参数:
编辑metrics-server的Deployment:
在容器参数中添加:kubectl edit deployment metrics-server -n kube-systemargs: - --kubelet-insecure-tls
内容的提问来源于stack exchange,提问作者khoailang
相关产品推荐
相关产品推荐

