0%

Istio 流量管理

Istio 流量管理

控制面

Pilot 控制面 内部存在服务注册表
流量管理控制面.png

服务数据

流量管理控制面.png

服务注册
k8s

原生支持

Consul Eureka 等其他服务注册表

MCP over xDS

通过CRD定义的服务数据:

ServiceEntry WorkLoadEntry

自定义流量规则:

VirtualService
Gateway
Destination Rule

流量管理模型

流量管理模型.png

数据面

数据面标准协议:Envoy配置模型和xDs协议

数据面Envoy配置模型和xDs协议.png

Istio 中 Envoy sidecar 配置

通过 Listener、Router-Config和Cluster 提供 入向和出向的配置
VirtualInboundLister
VirtualOutboundLister
InboundCluster
OutBoundCluster

端到端请求处理流程

数据面端到端请求处理流程.png

Istio 目前支持的协议

Istio目前支持的协议.png

Istio 协议扩展

  1. 自定义7层协议扩展
  2. 框架无关的通用路由
    Pilot 端需要修改 同时需修改 xDS协议 EnvoyFilter

Envoy filter

可以作为一个解决方案的突破口 通过 envoy filter 将需要被代理的协议在此层进行转换
比如 http2 -> 自定义协议 客户端还是按照http请求方式直接和自定义协议的服务端通信

控制面扩展

在上述基础之上进一步扩展 新增一个新的单独控制面 由它负责扩展协议和路由的解析

  1. 从 pilot 获取 istio原生支持的对象和路由规则
  2. 解析扩展的协议对象和路由规则(自定义CRD)
  3. 转化为 EnvoyFilter yaml 从而让 pilot 识别