Istio 流量路径 #
graph TD;
A[Client Request] --> B[Istio Ingress Gateway]
B --> C[VirtualService]
C --> D[DestinationRule]
D -->|Traffic Routing| E[Sidecar Proxy - Pod1]
D -->|Traffic Routing| F[Sidecar Proxy - Pod2]
E --> G[Application - Pod1]
F --> H[Application - Pod2]
G -->|Response| E
H -->|Response| F
E -->|Return to Gateway| B
F -->|Return to Gateway| B
B -->|Send Response to Client| A
说明 #
- 客户端请求 (
A
) 进入Istio Ingress Gateway
(B
):- 处理外部 HTTP/HTTPS 请求,可能涉及 TLS 终止。
VirtualService
(C
) 定义流量规则:- 指定 流量如何路由,如蓝绿部署、金丝雀发布等。
DestinationRule
(D
) 选择目标 Pod:- 可能涉及 负载均衡、流量分配。
- 流量通过
Sidecar Proxy
(E
,F
) 进入 Pod:- Envoy 代理 处理流量,提供安全、流量管理功能。
- Pod 内的应用 (
G
,H
) 处理请求并返回:- 响应先经过
Sidecar Proxy
,再回到Ingress Gateway
。
- 响应先经过
- 最终响应返回客户端 (
A
)。
流量路径解析 #
- 外部请求(Client) 访问
example.com
,流量进入 Istio Ingress Gateway。 - Ingress Gateway 解析流量并匹配相应的 VirtualService 规则。
- VirtualService 进行 流量路由(如 流量镜像、权重分流、请求重写)。
- DestinationRule 负责 负载均衡、熔断、超时重试,并将流量分配给不同的 Sidecar Proxy。
- Sidecar Proxy(Envoy) 负责代理流量到目标 应用 Pod,并提供安全、可观测性等能力。
- 应用 Pod 处理请求后返回响应,同样经过 Sidecar Proxy → Ingress Gateway,最终返回给 外部客户端。
适用场景 #
✅ 适用于 Istio 外部流量管理(如 https://example.com/api
)
✅ 支持 负载均衡、蓝绿发布、金丝雀部署
✅ 适用于 Ingress Gateway 代理的 Kubernetes 服务