1. 接收到的错误消息
commonLabels:
{
“severity”:“warning”,
“container”:“node-exporter”,
“pod”:“node-exporter-rssgq”,
“alertname”:“CPUThrottlingHigh”,
“namespace”:“kubesphere-monitoring-system”,
“prometheus”:“kubesphere-monitoring-system/k8s”
}
groupLabels:
{
“alertname”:“CPUThrottlingHigh”,
“namespace”:“kubesphere-monitoring-system”
}
很明显,是node-exporter容器cpu超标了。
2. 排错思路
node-exporter的作用是kubesphere监控模块中prometheus用于收集node指标的
在kubesphere管理界面进到node-exporter-rssgq容器详情页,资源情况显示用yml表示如下:
limits:
cpu: 600m
memory: 500Mi
requests:
cpu: 51m
memory: 180Mi
疑问:到底是在哪里配置node-exporter的资源限制的呢?
- 安装的时候?从github看了kubesphere-installer.yml,没找到蛛丝马迹
- 配置集群的时候?从github看了cluster-configuration.yml,没找到蛛丝马迹
- 无语中,要不在kubesphere管理端手动更改deployment?那容器重启后就不见了
- 实在是没办法,下载了ks-installer的源码阅读,ks-installer用于在k8s中部署kubesphere,找到了线索,看具体解决
3. 解决方案
在ks-installer的/deploy/cluster-configuration.yaml中看到有关配置,虽然注释掉了。
# node_exporter:
# resources:
# limits:
# cpu: 1
# memory: 500Mi
# requests:
# cpu: 102m
# memory: 180Mi
于是乎,使用admin账号,进入crd资源管理,搜索ClusterConfiguration并打开,编辑ks-installer,找到如下位置,新增:
monitoring:
prometheusMemoryRequest: 400Mi
prometheusVolumeSize: 20Gi
node_exporter:
limits:
cpu: 1
memory: 1024Mi
requests:
cpu: 51m
memory: 180Mi
以上从node_exporter开始部分为新增部分
最后,点击更新,过会儿查看node-exporter容器资源上线调整过来了。