K8s 中的 Prometheus
ServiceMonitor、与 helm-gitops 衔接。
30 分钟
K8s 中的 Prometheus
裸 compose 适合 ops lab;集群里常用 Prometheus Operator + ServiceMonitor 自动发现 Pod 并抓取 /actuator/prometheus。
学习目标
- 理解 ServiceMonitor 如何选中 backend Service
- 知道 Helm Chart 可打包 Prometheus 栈
- 与 kubernetes-essentials Deployment 探针形成闭环
核心内容
架构对比
ops lab(compose) K8s 集群
───────────────── ─────────
static_configs targets → ServiceMonitor 选 Service/Pod
host.docker.internal → cluster DNS: backend:8080
单实例 Prometheus → Operator 管理 HA / 配置热加载
学完 k8s-deployments 后,backend 已有:
readinessProbe:
httpGet:
path: /actuator/health
port: 8080
监控抓取路径独立配置,不占用探针端口逻辑。
ServiceMonitor 示例
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: coderoadmap-backend
labels:
release: kube-prometheus-stack
spec:
selector:
matchLabels:
app: backend
endpoints:
- port: http
path: /actuator/prometheus
interval: 30s
backend Service 需带 app: backend label,且 named port http 指向 8080。
Helm 与 GitOps
常用 Chart:kube-prometheus-stack(Prometheus + Grafana + Alertmanager)。values 里开启 ServiceMonitor 发现;变更走 Git PR,由 Argo CD sync(helm-gitops-essentials)。
多 Pod 时用 sum without (instance)(rate(...)) 聚合;Grafana 变量可选 pod 下钻。
练习
- 对照 backend Service YAML,检查
labels与ports.name是否匹配 ServiceMonitor - 说明 readiness 失败时 metrics 抓取会怎样(Pod 不在 Service endpoints)
- 画 compose ops lab 与 K8s Operator 两种部署的差异表
小结
K8s 监控 = ServiceMonitor 声明抓取目标 + Operator 运维 Prometheus 生命周期。 下一课区分何时查 metrics、何时查 logs。