一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Prometheus 如何监控 Kubernetes 集群中的 Pod

时间:2026-08-18 19:53:49 编辑:袖梨 来源:一聚教程网

Prometheus 监控 Kubernetes Pod 的核心是通过 Kubernetes API 动态发现目标,推荐使用 PodMonitor CRD 声明式配置,或通过 kubernetes_sd_configs 主动服务发现;需确保 Pod 正确暴露指标端点、标签匹配、RBAC 权限完备,并在 Prometheus UI 中验证 Targets 状态。

Prometheus 监控 Kubernetes 中的 Pod,核心是让 Prometheus 自动发现并持续采集 Pod 暴露的指标端点。它不依赖手动写死地址,而是靠 Kubernetes API 动态感知 Pod 生命周期变化——Pod 创建、销毁、迁移时,监控目标自动更新。

用 PodMonitor CRD 声明式定义监控目标

这是最推荐的方式,尤其适合用 Prometheus Operator 部署的集群。PodMonitor 是一个自定义资源(CRD),它直接按标签匹配 Pod,并指定指标路径和端口。

  1. 确保目标 Pod 在容器中暴露了符合 Prometheus 格式的指标(如 /metrics,文本格式或 OpenMetrics)
  2. 给 Pod 加上明确标签,例如 app.kubernetes.io/name: my-app
  3. 创建 PodMonitor 资源,指定 selector.matchLabelspodMetricsEndpoints.port(如 metrics
  4. 注意:PodMonitor 需与 Prometheus 实例在同一命名空间,或通过 namespaceSelector 显式授权跨命名空间发现

用 Kubernetes 服务发现(kubernetes_sd_configs)直接抓取

适用于未使用 Operator 的轻量部署,或需快速验证场景。Prometheus 主动轮询 API Server 获取 Pod 列表,再根据规则过滤和重标。

  1. scrape_configs 中配置 role: pod
  2. relabel_configs 过滤目标,例如只抓带 prometheus.io/scrape=true 注解的 Pod
  3. 常用重标操作:提取 Pod 名、Namespace、容器名,或改写 __metrics_path____address__
  4. 示例关键字段:__meta_kubernetes_pod_annotation_prometheus_io_port 指定抓取端口,__meta_kubernetes_pod_phase 可排除 FailedPending 状态 Pod

确保 Pod 正确暴露指标端点

监控能生效的前提,是 Pod 内容器真正提供可访问的指标接口。

  1. 应用需内置 exporter(如 Go 应用集成 promhttp)或 sidecar 注入(如 prometheus-node-exporter 不适用 Pod 级,但 process-exporter 可以)
  2. 容器端口需在 ports 中声明,且名称匹配 PodMonitor 或 relabel 中指定的 port 名
  3. 若指标路径不是默认 /metrics,必须在 PodMonitor 的 path 字段或 relabel 中显式设置
  4. 安全考虑:指标端口不应暴露到公网;若 Pod 使用 NetworkPolicy,需允许 Prometheus 所在节点或 Pod 的访问

验证和排查常见问题

配置完成后,别跳过验证环节——很多问题出在“看似配了,实则没采到”。

  1. 进 Prometheus UI → “Status” → “Targets”,查看对应 job 下是否有 UP 状态的目标,以及标签是否符合预期
  2. 检查 Pod 日志:确认指标端点能被 curl 通(可在同 namespace 的 debug Pod 中执行 curl http://<pod-ip>:<port>/metrics
  3. 常见失败原因:Pod 处于 CrashLoopBackOff(根本没起来)、指标端口未在容器 ports 定义、标签不匹配、RBAC 权限不足(Prometheus ServiceAccount 缺少 list/watch pods 权限)
  4. 指标查不到?用 PromQL 查询 count by(job, instance) ({__name__=~".+"}) 看是否有时间序列写入,再逐步缩小范围

热门栏目