1. 课程导论:Etcd压测沙盘与Istio访问日志采集的整体架构与学习目标
本课程旨在构建一个完整的Etcd压测沙盘,并在此沙盘之上,深度集成Istio服务网格的访问日志采集能力。通过本课程,您将掌握如何在高负载、动态的微服务环境中,利用Istio的可观测性特性,精准捕获并分析Etcd集群的访问模式与性能瓶颈。
1.1 整体架构概览
课程架构分为三个核心层次:压测沙盘层、服务网格层与可观测性层。压测沙盘模拟真实业务流量,服务网格层负责流量管理与数据捕获,可观测性层则负责日志的采集、存储与可视化。
架构核心原则: 所有对Etcd的访问流量必须经过Istio Sidecar代理,确保100%的流量可观测性,同时不侵入业务代码。
1.2 核心组件与数据流
下表详细描述了架构中各核心组件的职责及其在数据流中的位置:
| 层级 | 组件 | 职责描述 | 数据流方向 |
|---|---|---|---|
| 压测沙盘层 | 压测客户端 | 生成模拟读写请求,控制QPS与并发数 | → 模拟业务Pod |
| 压测沙盘层 | 模拟业务Pod | 运行业务逻辑,调用Etcd API进行数据操作 | → Sidecar → Etcd |
| 压测沙盘层 | Etcd集群 | 3节点高可用集群,存储压测数据 | ← Sidecar ← 业务Pod |
| 服务网格层 | Envoy Sidecar | 拦截所有进出Pod的流量,生成访问日志 | 双向拦截 |
| 服务网格层 | Istiod | 下发Envoy配置,包括日志过滤与格式策略 | → Sidecar |
| 可观测性层 | Fluent Bit | 从Sidecar采集日志,解析并转发至存储后端 | ← Sidecar → ES |
| 可观测性层 | Elasticsearch | 索引与存储结构化日志数据 | ← Fluent Bit |
| 可观测性层 | Kibana | 提供日志查询、仪表盘与可视化分析 | ← ES |
1.3 访问日志采集流程
Istio访问日志的采集遵循以下标准流程,确保每条Etcd请求都被完整记录:
- 流量拦截:Envoy Sidecar通过iptables规则透明拦截Pod内所有进出流量。
- 日志生成:Envoy根据Telemetry V2配置,为每个HTTP/gRPC请求生成结构化访问日志。
- 日志输出:日志默认以JSON格式输出到Sidecar容器的标准输出(stdout)。
- 日志采集:Fluent Bit作为DaemonSet运行在每个节点上,读取Sidecar的stdout日志。
- 日志解析:Fluent Bit使用内置解析器(如json、regex)将日志字段提取为结构化数据。
- 日志转发:解析后的日志通过HTTP或gRPC输出插件发送至Elasticsearch集群。
- 日志存储与索引:Elasticsearch按时间与字段建立索引,支持快速检索。
- 可视化与告警:Kibana提供实时仪表盘,并基于日志内容触发告警规则。
关键配置点: 在Istio中,通过
MeshConfig 或 EnvoyFilter 可以精细控制访问日志的格式与过滤条件。例如,只记录Etcd相关端口的日志,或只记录错误状态码的请求,从而降低日志存储成本。
1.4 学习目标与课程收益
完成本课程后,您将能够:
- 搭建Etcd压测沙盘:使用Docker Compose或Kubernetes部署一个包含压测客户端、业务Pod与Etcd集群的完整测试环境。
- 配置Istio服务网格:在Kubernetes集群中安装Istio,并为Etcd相关服务启用Sidecar注入。
- 定制访问日志格式:通过Istio Telemetry API自定义日志字段,包含Etcd请求的Key、操作类型、响应时间等关键指标。
- 部署日志采集管道:使用Fluent Bit采集Sidecar日志,并配置Elasticsearch与Kibana进行存储与展示。
- 分析压测数据:在Kibana中创建仪表盘,实时监控Etcd的读写QPS、延迟分布与错误率。
- 故障排查与优化:基于访问日志快速定位慢查询、连接异常与热点Key问题。
1.5 适用人群与前置知识
本课程适合以下人群:
- SRE / 运维工程师:需要构建Etcd可观测性体系,提升故障定位效率。
- 云原生架构师:设计基于服务网格的微服务可观测性方案。
- 平台开发工程师:需要为内部团队提供Etcd访问日志的标准化采集能力。
- Istio / Envoy 初学者:希望从实战案例入手,理解Istio可观测性核心功能。
前置知识要求: 建议学员具备以下基础:Kubernetes基本操作(Pod、Service、Deployment)、Etcd基础概念(Key-Value、Raft)、Docker容器化基础。无需Istio或Envoy经验,课程将从零开始讲解。
1.6 课程实验环境说明
本课程所有实验均在以下环境中验证通过:
| 组件 | 版本 | 说明 |
|---|---|---|
| Kubernetes | v1.28+ | 建议使用Kind或Minikube本地集群 |
| Istio | 1.20+ | 启用Telemetry V2访问日志功能 |
| Etcd | v3.5+ | 3节点集群,使用etcd-operator部署 |
| Fluent Bit | 2.1+ | DaemonSet部署,配置ES输出插件 |
| Elasticsearch | 8.11+ | 单节点或3节点集群 |
| Kibana | 8.11+ | 用于日志可视化与仪表盘 |
课程提供完整的 docker-compose.yaml 与 k8s-manifest 示例代码,确保学员可以快速复现实验环境。