You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何借助独立监控Kubernetes集群,使用Grafana和Prometheus实现多Kubernetes集群监控

如何借助独立监控Kubernetes集群,使用Grafana和Prometheus实现多Kubernetes集群监控

我来帮你梳理这个多集群监控的落地方案,完全匹配你提到的架构——用独立的monitoring集群作为监控中枢,只在这个集群部署完整的Prometheus和Grafana栈,而另外两个业务集群(onetwo)仅部署必要的监控采集组件,既节省资源又能实现统一管控。

一、先明确架构分工

  • monitoring集群:作为核心监控节点,部署完整的Prometheus(负责数据采集、存储)和Grafana(负责可视化展示),是整个监控体系的大脑。
  • 业务集群(one、two):仅部署node exporter(采集节点硬件/系统指标)和kube-state-metrics(采集Kubernetes资源状态指标),不部署完整Prometheus,降低集群资源消耗。

二、在业务集群部署采集组件

分别在onetwo集群中完成以下组件部署:

  • 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实现多集群监控可视化

  1. monitoring集群安装Grafana,同样可以用Helm快速部署:
helm install grafana grafana/grafana
  1. 访问Grafana UI后,添加Prometheus作为数据源(地址填Prometheus服务的ClusterIP或NodePort地址)。
  2. 导入现成的仪表盘模板,快速实现可视化:
    • Node Exporter仪表盘:推荐使用社区成熟模板,可展示所有节点的系统指标
    • Kube State Metrics仪表盘:选择对应模板,可展示Kubernetes资源的状态信息

导入后,你就能在Grafana中统一查看两个业务集群的所有监控数据了。

五、注意事项

  • 网络连通性:确保monitoring集群能访问到业务集群的30091、30092端口,需要在防火墙、安全组中开放对应端口。
  • 安全加固(可选):如果生产环境使用,建议给exporter添加Basic Auth认证,或者通过Service Mesh管控访问,避免监控端口暴露在公网。
  • 动态发现(进阶):如果业务集群节点较多或IP经常变动,可以改用Kubernetes API服务发现代替静态配置,更灵活地抓取数据。

备注:内容来源于stack exchange,提问作者Mysterio

火山引擎 最新活动