如何配置CentOS上的中心Prometheus/Grafana监控多个K8S集群
完全可以在CentOS系统上部署Prometheus+Grafana作为中心监控服务,实现多K8S集群的统一监控,参考架构如下:
可选部署方案说明
不用强制部署远程推送组件,实验室环境推荐优先选拉取模式,配置更简单;如果集群和中心网络存在隔离,可选用推送模式。
1. 中心端(CentOS服务器)部署配置
- 首先部署Prometheus:可直接下载官方二进制包运行,或通过Docker快速启动,启动命令参考:
docker run -d -p 9090:9090 -v /本地配置文件路径/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:latest - 部署Grafana:同样支持二进制或Docker部署,启动命令参考:
docker run -d -p 3000:3000 grafana/grafana:latest
2. 各K8S集群侧配置
方案1:拉取模式(无推送组件,首选)
- 每个K8S集群仅需部署指标暴露组件,无需安装完整Prometheus:
- 部署
node-exporter:用于暴露集群节点的CPU、内存、磁盘等基础指标,可通过Helm一键安装:helm install prometheus-community/prometheus-node-exporter --generate-name -n monitoring --create-namespace - 部署
kube-state-metrics:用于暴露Deployment、Pod、Service等K8S资源对象的状态指标,Helm安装命令:helm install prometheus-community/kube-state-metrics --generate-name -n monitoring
- 部署
- 将上述两个服务通过NodePort/Ingress暴露,确保CentOS中心服务器能正常访问对应服务端口。
- 修改中心Prometheus的
prometheus.yml配置,添加各个集群的抓取任务,通过额外标签区分不同集群,配置示例如下:
scrape_configs: # 集群1节点监控任务 - job_name: 'k8s-cluster1-nodes' static_configs: - targets: ['集群1节点IP:node-exporter暴露的端口'] labels: cluster: 'cluster-test1' # 集群1资源状态监控任务 - job_name: 'k8s-cluster1-k8s-resources' static_configs: - targets: ['集群1节点IP:kube-state-metrics暴露的端口'] labels: cluster: 'cluster-test1' # 其他集群的任务按上述格式重复添加即可
- 配置修改后重启中心Prometheus生效。
方案2:推送模式(需远程写组件)
- 每个K8S集群部署轻量Prometheus Agent,无需本地持久化存储,仅负责抓取集群内所有指标后远程写入中心Prometheus。
- 配置集群内Prometheus Agent的抓取规则,覆盖node-exporter、kube-state-metrics等所有需要采集的指标,同时添加
cluster标签区分集群。 - 在Prometheus Agent配置中添加
remote_write配置,地址指向中心Prometheus的http://中心CentOSIP:9090/api/v1/write接口即可。
3. Grafana可视化配置
- 登录Grafana控制台(默认端口3000,初始账号密码admin/admin),添加Prometheus数据源,地址填中心Prometheus的访问地址。
- 导入K8S监控仪表盘模板,配置
cluster作为切换变量,即可实现不同集群监控数据的切换查看。
注意事项
- 实验室环境无需配置复杂的认证鉴权,仅需保证各K8S集群和中心CentOS服务器之间网络互通即可。
- 不要将Prometheus、Grafana的端口直接暴露到公网,避免未授权访问风险。
内容的提问来源于stack exchange,提问作者Noune Zozanian
相关产品推荐
相关产品推荐

