1. 课程导论:控制平面通信概述、Prometheus在云原生监控中的角色、课程目标与学习路径

1.1 控制平面通信概述

在云原生架构中,控制平面(Control Plane)是集群的“大脑”,负责维护期望状态、调度工作负载、管理服务发现与配置分发。控制平面组件之间的通信机制直接决定了集群的稳定性、一致性与可观测性。

以 Kubernetes 为例,控制平面核心组件包括:

组件 职责 通信协议
kube-apiserver 所有组件交互的网关,提供 RESTful API HTTPS (TLS)
etcd 分布式键值存储,保存集群状态 gRPC (TLS)
kube-scheduler 监听未调度的 Pod,绑定到合适节点 Watch / HTTP
kube-controller-manager 运行控制器循环,调节实际状态至期望状态 Watch / HTTP
kubelet 节点代理,管理 Pod 生命周期 HTTPS / gRPC

控制平面通信的核心模式包括:

  • 请求-响应:组件通过 API Server 进行同步调用(如创建 Deployment)。
  • Watch / 长轮询:控制器通过 Watch 机制监听资源变化,实现事件驱动。
  • gRPC 流:etcd 与 API Server 之间使用 gRPC 双向流传输数据。
  • Leader 选举:控制器组件通过 etcd 的租约机制实现高可用。
关键洞察: 控制平面通信的延迟、错误率、吞吐量直接影响集群的调度速度、控制器收敛时间以及故障恢复能力。Prometheus 是观测这些指标的首选工具。
控制平面通信架构(Kubernetes 示例) 控制平面 kube-apiserver etcd kube-scheduler kube-controller-manager gRPC (TLS) Watch / HTTP Watch / HTTP 工作节点 kubelet kube-proxy 容器运行时 HTTPS / gRPC

1.2 Prometheus 在云原生监控中的角色

Prometheus 是 CNCF 毕业项目,已成为云原生监控的事实标准。它在控制平面监控中扮演以下核心角色:

  • 指标采集器:通过 Pull 模式从各组件暴露的 /metrics 端点抓取时序数据。
  • 告警引擎:基于 PromQL 定义告警规则,检测控制平面异常(如 API Server 高延迟、etcd 领导者变更频繁)。
  • 数据源:为 Grafana 等可视化工具提供后端,构建控制平面健康仪表盘。
  • 联邦与聚合:通过联邦机制聚合多集群控制平面指标,实现全局视图。
最佳实践: 控制平面组件应启用 TLS 认证的 /metrics 端点,并使用 Prometheus 的 service monitor 或 pod monitor 自动发现目标,避免手动配置。
Prometheus 在控制平面监控中的角色 kube-apiserver etcd kube-scheduler kube-controller-manager Prometheus Pull /metrics 告警规则评估 时序数据存储 Grafana Alertmanager API / 联邦

1.3 课程目标与学习路径

本课程旨在帮助 SRE 和平台工程师深入理解控制平面通信机制,并掌握使用 Prometheus 进行监控、告警和故障排查的实战技能。

课程目标

  • 理解控制平面通信原理:掌握 API Server、etcd、Scheduler、Controller Manager 之间的交互协议与数据流。
  • 搭建 Prometheus 监控栈:部署 Prometheus、Alertmanager、Grafana,并配置 ServiceMonitor 自动发现控制平面组件。
  • 定义关键指标与告警:识别控制平面健康的核心指标(如 etcd 磁盘 fsync 延迟、API Server 请求延迟 P99),编写 PromQL 告警规则。
  • 故障排查实战:通过指标回溯、日志关联、链路追踪等手段,定位控制平面通信瓶颈与故障根因。

学习路径

阶段 章节范围 核心内容
基础篇 第 1-5 章 控制平面通信概述、Prometheus 基础、指标模型、PromQL 入门
进阶篇 第 6-15 章 各组件通信详解、关键指标分析、告警规则设计、Grafana 仪表盘
实战篇 第 16-25 章 故障场景模拟、指标回溯、日志与链路追踪集成、自动化运维
高级篇 第 26-30 章 多集群联邦、大规模优化、自定义 exporter、Cortex/Thanos 扩展
前置要求: 建议学员具备 Kubernetes 基础操作经验(kubectl、Pod、Service 概念),了解基本 Linux 命令行和 YAML 语法。无需深入 Go 或 C++ 编程。

学习建议

  • 每章结束后,在测试集群中复现示例配置,加深理解。
  • 关注控制平面组件的官方文档中的 metrics 列表,建立指标敏感度。
  • 使用 promtool 检查告警规则语法,避免配置错误导致告警失效。