如何借助独立监控Kubernetes集群,使用Grafana和Prometheus实现多Kubernetes集群监控
如何借助独立监控Kubernetes集群,使用Grafana和Prometheus实现多Kubernetes集群监控
我来帮你梳理这个多集群监控的落地方案,完全匹配你提到的架构——用独立的monitoring集群作为监控中枢,只在这个集群部署完整的Prometheus和Grafana栈,而另外两个业务集群(one、two)仅部署必要的监控采集组件,既节省资源又能实现统一管控。
一、先明确架构分工
- monitoring集群:作为核心监控节点,部署完整的Prometheus(负责数据采集、存储)和Grafana(负责可视化展示),是整个监控体系的大脑。
- 业务集群(one、two):仅部署
node exporter(采集节点硬件/系统指标)和kube-state-metrics(采集Kubernetes资源状态指标),不部署完整Prometheus,降低集群资源消耗。
二、在业务集群部署采集组件
分别在one和two集群中完成以下组件部署:
- node exporter:用于收集节点的CPU、内存、磁盘、网络等基础指标,建议通过NodePort方式暴露服务(端口设为30091,和你提到的配置对应),确保monitoring集群能访问到这个端口。
- kube-state-metrics:用于收集Pod、Deployment、Service等Kubernetes资源的运行状态指标,同样用NodePort暴露服务(端口设为30092)。
你可以用Helm快速部署这两个组件,比如:
# 部署node exporter helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm install node-exporter prometheus-community/prometheus-node-exporter --set service.type=NodePort --set service.nodePort=30091 # 部署kube-state-metrics helm install kube-state-metrics prometheus-community/kube-state-metrics --set service.type=NodePort --set service.nodePort=30092
三、在监控集群配置Prometheus抓取多集群数据
在monitoring集群部署Prometheus时,通过自定义prometheus-values.yaml来添加对业务集群的抓取配置,这样Prometheus就能主动拉取两个业务集群的监控数据。
完整的配置示例如下:
# prometheus-values.yaml server: global: scrape_interval: 15s # 全局抓取间隔,15秒一次适合大部分场景 persistentVolume: enabled: true # 开启持久化存储,避免重启丢失监控数据 size: 8Gi # 根据监控规模调整存储大小 additionalScrapeConfigs: # 抓取集群one的node exporter数据 - job_name: 'cluster-one-node-exporter' static_configs: - targets: ['<cluster-one-ip>:30091'] # 替换为集群one的NodeIP或负载均衡地址 # 抓取集群one的kube-state-metrics数据 - job_name: 'cluster-one-kube-state-metrics' static_configs: - targets: ['<cluster-one-ip>:30092'] # 抓取集群two的node exporter数据 - job_name: 'cluster-two-node-exporter' static_configs: - targets: ['<cluster-two-ip>:30091'] # 替换为集群two的NodeIP或负载均衡地址 # 抓取集群two的kube-state-metrics数据 - job_name: 'cluster-two-kube-state-metrics' static_configs: - targets: ['<cluster-two-ip>:30092']
之后用Helm安装Prometheus时指定这个values文件:
helm install prometheus prometheus-community/prometheus -f prometheus-values.yaml
四、用Grafana实现多集群监控可视化
- 在
monitoring集群安装Grafana,同样可以用Helm快速部署:
helm install grafana grafana/grafana
- 访问Grafana UI后,添加Prometheus作为数据源(地址填Prometheus服务的ClusterIP或NodePort地址)。
- 导入现成的仪表盘模板,快速实现可视化:
- Node Exporter仪表盘:推荐使用社区成熟模板,可展示所有节点的系统指标
- Kube State Metrics仪表盘:选择对应模板,可展示Kubernetes资源的状态信息
导入后,你就能在Grafana中统一查看两个业务集群的所有监控数据了。
五、注意事项
- 网络连通性:确保
monitoring集群能访问到业务集群的30091、30092端口,需要在防火墙、安全组中开放对应端口。 - 安全加固(可选):如果生产环境使用,建议给exporter添加Basic Auth认证,或者通过Service Mesh管控访问,避免监控端口暴露在公网。
- 动态发现(进阶):如果业务集群节点较多或IP经常变动,可以改用Kubernetes API服务发现代替静态配置,更灵活地抓取数据。
备注:内容来源于stack exchange,提问作者Mysterio




