type
status
date
slug
summary
tags
category
icon
password

1. VirtualService 是什么?

  • Kubernetes Service:做服务发现与负载均衡
  • Istio VirtualService (VS):定义请求如何被路由
  • Istio DestinationRule (DR):定义**目标服务的子集(subsets)**及连接策略。
  • Istio Gateway:把网格内服务暴露到外部。
一句话:Service 负责"找到谁",VirtualService 负责"怎么去",DestinationRule 负责"去向的细化与稳定性策略",Gateway 负责"从哪里进/出"。

2. 使用场景

  1. 金丝雀发布 / 蓝绿发布
  1. A/B 实验 / 精准灰度(Header/Cookie/Query)
  1. 路径路由与重写
  1. 超时/重试
  1. 流量镜像
  1. 故障注入
  1. gRPC 路由
  1. 网关入口路由

3. 示例:权重灰度

3.1 Deployment + Service

3.2 DestinationRule

3.3 VirtualService

4. A/B 实验(按 Header 路由)

5. 路径路由与重写

6. 超时与重试

7. 流量镜像

8. 故障注入

9. gRPC 路由

10. Java 代码协作示例

Feign 全局拦截器

Spring WebClient

11. 常见坑与最佳实践

  • 子集必须存在
  • 匹配顺序:越精准的放前面
  • 权重总和最好 100
  • Header 名小写
  • 网关与主机名要一致
  • 观测先行:配合 Prometheus/Grafana/Kiali
  • DR 配合 VS:连接池/熔断/逐出在 DR

12. 验证命令

13. 模板清单

  • 权重灰度
  • Header/Cookie/Query 定向
  • 路径路由 + 重写
  • 超时 + 重试
  • 流量镜像
  • 故障注入
  • gRPC