问题描述
使用虚拟机部署的k8s集群,一键部署了prometheus-operator,在某些场景下,比如关机后开机,nodeexporter重启,在grafana面板会缺少部分集群节点的监控
问题采集
-
首先有节点有数据,排除采集链路问题,定位单点问题,通过top po 发现未上报数据的节点exporter的CPU会高于其他正常节点
-
pod未见异常日志
-
curl 节点IP:9100 异常节点的响应非常慢,怀疑是节点网络存在问题,通过同节点的svc nodeport测试发现curl nodeport响应没有问题,定位问题还是在服务本身
-
此时认为是metrics拉取数据超时,因为目前能看到curl已经很慢了,调整kube-state-metrics
kubectl edit servicemonitor kube-state-metrics -n monitoring
#检查这几项
spec:
endpoints:
- port: metrics
interval: 10s # 默认 30s,调整为 10s 采集指标频率,每10s采集1次
scrapeTimeout: 5s # 采集超时时间
- 将上面优化参数调整后,重建kube-state-metrics的pod,发现有节点添加上来了,但不是所有的,后面curl测试两个节点的9100端口发现长时间不通,本地也在监听,暂时重建pod恢复
- kube-rbac-proxy的边车pod cpu用满了
------将ds的limits提高了CPU以后,看起来是正常了,但是实际上其他节点没有问题,还需要进一步调试,找下细节
引入新问题,node的指标阶段性获取失败
[root@master-1 ~]# kubectl top node
error: metrics not available yet
问题闭环:node-exporter资源配置CPU和MEM调大
resources:
limits:
cpu: 256m
memory: 256Mi
requests:
cpu: 10m
memory: 20Mi