1. 课程导论:Etcd压测沙盘与Istio访问日志采集的整体架构与学习目标

本课程旨在构建一个完整的Etcd压测沙盘,并在此沙盘之上,深度集成Istio服务网格的访问日志采集能力。通过本课程,您将掌握如何在高负载、动态的微服务环境中,利用Istio的可观测性特性,精准捕获并分析Etcd集群的访问模式与性能瓶颈。

1.1 整体架构概览

课程架构分为三个核心层次:压测沙盘层、服务网格层与可观测性层。压测沙盘模拟真实业务流量,服务网格层负责流量管理与数据捕获,可观测性层则负责日志的采集、存储与可视化。

架构核心原则: 所有对Etcd的访问流量必须经过Istio Sidecar代理,确保100%的流量可观测性,同时不侵入业务代码。
Etcd压测沙盘与Istio访问日志采集整体架构 压测沙盘层 压测客户端 模拟业务Pod Etcd Operator Etcd集群 服务网格层 (Istio) Envoy Sidecar (数据面) Istiod (控制面) Telemetry V2 (访问日志) 可观测性层 Fluent Bit (日志采集) Elasticsearch (日志存储) Kibana (日志可视化) 告警 (Alert)

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请求都被完整记录:

  1. 流量拦截:Envoy Sidecar通过iptables规则透明拦截Pod内所有进出流量。
  2. 日志生成:Envoy根据Telemetry V2配置,为每个HTTP/gRPC请求生成结构化访问日志。
  3. 日志输出:日志默认以JSON格式输出到Sidecar容器的标准输出(stdout)。
  4. 日志采集:Fluent Bit作为DaemonSet运行在每个节点上,读取Sidecar的stdout日志。
  5. 日志解析:Fluent Bit使用内置解析器(如json、regex)将日志字段提取为结构化数据。
  6. 日志转发:解析后的日志通过HTTP或gRPC输出插件发送至Elasticsearch集群。
  7. 日志存储与索引:Elasticsearch按时间与字段建立索引,支持快速检索。
  8. 可视化与告警: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问题。
课程学习路径 沙盘环境 搭建 Istio网格 安装与配置 日志格式 定制 采集管道 部署 可视化 与告警

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 示例代码,确保学员可以快速复现实验环境。