用途
本技能用于配置 Istio 流量管理,覆盖生产级服务网格部署中的服务间路由、负载均衡、熔断、重试与超时、流量镜像、故障注入以及入口网关等能力。资料列出适合使用的场景包括:配置服务到服务的路由、实施金丝雀或蓝绿部署、设置熔断器与重试、负载均衡配置、用于测试的流量镜像、用于混沌工程的故障注入。
核心概念
资料将流量管理资源归纳为四类:
- VirtualService:将流量路由到目标,作用域为基于主机(Host-based)。
- DestinationRule:在路由之后定义策略,作用域为基于服务(Service-based)。
- Gateway:配置入口/出口,作用域为集群边缘(Cluster edge)。
- ServiceEntry:添加外部服务,作用域为整个网格(Mesh-wide)。
资料给出的流量路径为:Client → Gateway → VirtualService(路由)→ DestinationRule(策略)→ Service(pods)。
主要能力与模板
资料提供了 7 个配置模板,均以代码形式给出:
- 基础路由:使用 VirtualService 按请求头(如 end-user: jason)匹配并路由到 reviews 的 v2 子集,其余流量走 v1;配合 DestinationRule 定义 v1、v2、v3 子集(按 version 标签)。
- 金丝雀部署:VirtualService 按权重将流量分发到 stable 子集(90)与 canary 子集(10);DestinationRule 配置连接池(TCP maxConnections、HTTP h2UpgradePolicy、http1MaxPendingRequests、http2MaxRequests)与两个子集。
- 熔断:DestinationRule 中配置连接池(含 maxRetries)与 outlierDetection(consecutive5xxErrors、interval、baseEjectionTime、maxEjectionPercent、minHealthPercent)。
- 重试与超时:VirtualService 中设置 timeout、retries(attempts、perTryTimeout、retryOn、retryRemoteLocalities)。
- 流量镜像:VirtualService 将请求路由到 v1 子集,同时将流量镜像到 v2 子集,mirrorPercentage 设为 100.0。
- 故障注入:VirtualService 中配置 delay(percentage、fixedDelay)与 abort(percentage、httpStatus)。
- 入口网关:Gateway 配置 443/HTTPS 及 TLS(SIMPLE、credentialName 指向 Secret),指定 hosts;配套 VirtualService 按 URI 前缀(/api/v1)将流量路由到 api-service 的 8080 端口。
负载均衡策略
资料给出通过 DestinationRule 的 trafficPolicy.loadBalancer 配置:
- 简单策略:ROUND_ROBIN,或 LEAST_CONN、RANDOM、PASSTHROUGH。
- 一致性哈希(用于粘性会话):consistentHash 可基于 httpHeaderName(如 x-user-id),或 httpCookie、useSourceIp、httpQueryParameterName。
使用建议(资料给出的最佳实践)
建议做法:从简单开始、逐步增加复杂度;使用子集,明确地为服务版本化;始终配置合理的超时;启用重试,但配合退避与上限;使用 Kiali 和 Jaeger 进行可观测性监控。
不建议做法:不要过度重试(可能导致级联失败);不要忽略异常检测,应启用熔断器;不要镜像到生产环境,应镜像到测试环境;不要跳过金丝雀,应先用小比例流量测试。
调试命令
资料提供以下命令:
- istioctl analyze —— 检查 VirtualService 配置
- istioctl proxy-config routes deploy/my-app -o json —— 查看生效路由
- istioctl proxy-config endpoints deploy/my-app —— 检查端点发现
- istioctl proxy-config log deploy/my-app --level debug —— 调试流量
限制
资料未提供该技能的安装方式、运行环境要求、版本兼容范围、收费模式以及具体效果或性能数据,这些内容暂未提供。