温馨提示×

Ubuntu Kubernetes 集群监控如何设置

小樊
31
2025-12-26 10:53:03
栏目: 智能运维

Ubuntu Kubernetes 集群监控搭建指南

一 架构与组件选型

  • 指标监控:使用 Prometheus 采集与存储时间序列指标,配合 Grafana 做可视化与面板展示。
  • 采集覆盖:
    • cAdvisor(已内置于 Kubelet)负责容器资源使用指标。
    • Node Exporter 负责节点级(CPU、内存、磁盘、网络)指标。
    • kube-state-metrics 负责集群对象(Pod、Deployment、Node 等)状态指标。
  • 告警通知:使用 Alertmanager 对接企业微信、钉钉、邮件、Webhook 等通道。
  • 部署方式:优先采用 kube-prometheus-stack(Prometheus Operator 的发行版),通过 Helm 快速安装与维护,内置大量 ServiceMonitorGrafana 仪表盘,开箱即用。

二 快速落地步骤

  • 准备环境
    • 确保集群可正常访问镜像仓库,节点时间已同步(如 chrony),并具备 kubectlHelm 3 环境。
  • 安装 kube-prometheus-stack(Helm)
    • 添加仓库并安装(示例命名空间为 monitoring):
      helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
      helm repo update
      kubectl create ns monitoring
      helm install prometheus prometheus-community/kube-prometheus-stack \
        --namespace monitoring \
        --set grafana.service.type=NodePort \
        --set prometheus.service.type=NodePort
      
    • 验证安装:
      kubectl -n monitoring get pods -l app.kubernetes.io/name=prometheus
      kubectl -n monitoring get svc prometheus-grafana
      kubectl -n monitoring get svc prometheus-kube-prometheus-prometheus
      
  • 访问控制台
    • Grafana:http://<任一节点IP>:/,默认账号 admin,首次登录需设置密码。
    • Prometheus:http://<任一节点IP>:/,可查询 upnode_cpu_seconds_total 等指标。
  • 导入常用仪表盘
    • 在 Grafana 导入 Kubernetes / Compute Resources / Cluster(ID:3119)、Nodes(ID:315)等官方面板,快速获得节点与集群概览。

三 关键配置与扩展

  • 持久化存储(可选,生产推荐)
    • 使用 NFS 或其他 StorageClass 为 Prometheus 与 Grafana 提供 PVC,避免数据重启丢失。示例思路:
      • 搭建 NFS Server(Ubuntu):安装 nfs-kernel-server,配置导出目录(如 /data/pvdata),客户端安装 nfs-common 并挂载验证。
      • 创建 PV/PVC(示例名称空间 monitoring),在 Helm 安装时通过 values.yaml 指定 Prometheus 的 persistence.storageClasssize,或复用已有 PVC。
  • 自定义采集与告警
    • 为应用添加注解,使其被 Prometheus 自动发现:
      metadata:
        annotations:
          prometheus.io/scrape: "true"
          prometheus.io/port: "8080"
          prometheus.io/path: "/metrics"
      
    • PrometheusRule 中定义告警规则(如 InstanceDown),并在 Alertmanager 配置路由与接收器(钉钉/企业微信/邮件/Webhook),实现 7×24 通知。

四 验证与常见问题

  • 验证采集链路
    • 在 Prometheus Targets 页面确认 kubeletnode-exporterkube-state-metricsprometheus 等均为 UP 状态。
    • 在 Grafana 查询 up{job=“kubernetes-nodes”}rate(node_cpu_seconds_total[5m]) 等指标是否有数据。
  • 常见问题排查
    • 节点未就绪:检查 kubeletcAdvisor 是否正常,节点污点与污点容忍是否影响调度。
    • 抓取失败:核对 ServiceMonitornamespaceSelector/selector 与目标的 annotations 是否匹配。
    • 存储不可用:确认 StorageClass 存在且 PV/PVC 处于 Bound,权限与路径正确(NFS 场景下目录属主与权限)。
    • 告警未送达:检查 Alertmanagerroutereceivers 配置、网络连通性与 Webhook 签名/Token 是否正确。

0