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. 使用场景
- 金丝雀发布 / 蓝绿发布
- A/B 实验 / 精准灰度(Header/Cookie/Query)
- 路径路由与重写
- 超时/重试
- 流量镜像
- 故障注入
- gRPC 路由
- 网关入口路由
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