2025-3-13 istio流量分析

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

说明 #

  1. 客户端请求 (A) 进入 Istio Ingress Gateway (B)
    • 处理外部 HTTP/HTTPS 请求,可能涉及 TLS 终止。
  2. VirtualService (C) 定义流量规则
    • 指定 流量如何路由,如蓝绿部署、金丝雀发布等。
  3. DestinationRule (D) 选择目标 Pod
    • 可能涉及 负载均衡、流量分配
  4. 流量通过 Sidecar Proxy (E, F) 进入 Pod
    • Envoy 代理 处理流量,提供安全、流量管理功能。
  5. Pod 内的应用 (G, H) 处理请求并返回
    • 响应先经过 Sidecar Proxy,再回到 Ingress Gateway
  6. 最终响应返回客户端 (A)

流量路径解析 #

  1. 外部请求(Client) 访问 example.com,流量进入 Istio Ingress Gateway
  2. Ingress Gateway 解析流量并匹配相应的 VirtualService 规则。
  3. VirtualService 进行 流量路由(如 流量镜像、权重分流、请求重写)。
  4. DestinationRule 负责 负载均衡、熔断、超时重试,并将流量分配给不同的 Sidecar Proxy
  5. Sidecar Proxy(Envoy) 负责代理流量到目标 应用 Pod,并提供安全、可观测性等能力。
  6. 应用 Pod 处理请求后返回响应,同样经过 Sidecar Proxy → Ingress Gateway,最终返回给 外部客户端

适用场景 #

✅ 适用于 Istio 外部流量管理(如 https://example.com/api) ✅ 支持 负载均衡、蓝绿发布、金丝雀部署 ✅ 适用于 Ingress Gateway 代理的 Kubernetes 服务