Istio 数据平面解析:Envoy 操作与配置
核心观点
本文深入探讨了 Istio 数据平面中 Envoy 的工作机制,重点解析了 Envoy 的操作流程与配置方式,以及 Istio 如何通过 Envoy 实现服务发现、配置管理和流量控制。
关键组件与功能
Istio 组件
- istiod:Envoy 的“管理服务器”,负责服务发现、Envoy 配置和网格配置协议。
- Galley:Istiod 的核心组件,负责处理服务发现、Envoy 配置和 Kubernetes API 交互。
- Pilot:负责理解 Kubernetes、Autograph 证书和 Sidecar 注入。
Envoy 组件
- 术语解释:
- 上游(Upstream):Envoy 发送请求的目标。
- 下游(Downstream):Envoy 接收请求的来源。
- 集群(Clusters)与端点(Endpoints):集群是上游服务器的逻辑表示,端点是集群中的具体服务器实例。
- 监听器(Listeners)与路由(Routes):监听器定义了 Envoy 接收请求的方式,路由定义了如何处理和转发请求。
- 操作流程:
- Envoy 解码 TCP 字节流,解析 HTTP 协议,调用 WSGI 可调用对象,并生成响应。
- Envoy 通过 Kubernetes 网络模型与后端服务交互,例如通过
outbound|8000||dest-app.dest-app.svc.cluster.localsource-app 进行请求转发。
- Envoy 支持多种扩展和插件,如访问日志记录器、重试实现、追踪器、资源监控器和凭证提供者。
- Envoy 的过滤器链(Filter Chains)根据请求类型(如 HTTP 或 TCP)选择不同的过滤器进行处理。
- 配置方式:
- Envoy 配置文件通过
bootstrap 文件定义,包含 Pilot-agent、代理、管理器、路由、集群和端点等组件。
- 配置文件涉及多个层级,如
pilot-agent istio-iptables listeners filters managers routes clusters endpoints。
- 具体配置包括集群、监听器、路由和密钥等。
研究结论
- Envoy 作为 Istio 数据平面的核心组件,通过灵活的配置和操作机制,实现了高效的服务发现、流量控制和流量管理。
- Istio 通过 istiod 和 Galley 组件,将 Kubernetes 资源转换为 Envoy 可用的配置,实现了自动化和动态化的服务治理。
- Envoy 的过滤器链机制,提供了丰富的流量处理能力,如统计、CORS、故障注入和路由控制等。
关键术语与缩写
Istio 缩写
- CR:Custom Resource,自定义资源的实例。
- CRD:Custom Resource Definition,自定义资源的规范。
- SD:Service Discovery,服务发现。
- MX:Metadata Exchange,Istio 特有的 Envoy 扩展,提供类似 Mixer 的属性数据。
- MCP:Mesh Configuration Protocol,Istio 组件间通信协议。
Envoy 缩写
- FCM:Filter Chain Match,过滤器链匹配。
- ALS:Access Log Service,访问日志服务。
- xDS:x Discovery Service,如 CDS、LDS、RDS 和 SDS 等。
- UDPA:Universal Data Plane API,XDS v4 协议。
- UDPA-TP:UDPA Transport Protocol,UDPA 传输协议。
- UDPA-DM:UPDA Data Model,UDPA 数据模型。
- ORCA:Open Request Cost Aggregation,请求成本聚合。
- DPLB:Data Plane Load Balancer,数据平面负载均衡器。