适用场景
Mesh 把流量治理从代码里拿出来放到 Sidecar:好处是统一,代价是资源开销与排障复杂度增加。判断标准是"服务数量与治理需求"。
配置步骤(流量治理(灰度 / 熔断 / mTLS))
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata: { name: web, namespace: app }
spec:
hosts: [web]
http:
- route:
- destination: { host: web, subset: v1 }
weight: 90
- destination: { host: web, subset: v2 }
weight: 10
关键参数与建议
- 适用:服务数量多、需要细粒度流量治理(灰度、熔断、mTLS)
- 注入:按命名空间自动注入,注意排除 kube-system 等系统命名空间
- 资源:每个 Pod 增加 Sidecar,CPU/内存预算要提前算
- 可观测:Mesh 自带指标与链路,但对 PROMETHEUS 等平台要求更高
- 排障:理解 iptables 拦截与 Sidecar 日志,否则问题定位很痛苦
容易踩的坑
- 权重灰度未配合指标观察,等于直接全量
- 熔断阈值不合理,正常抖动被误熔断
- mTLS 全开后未处理未注入的服务,调用失败
验证与巡检
istioctl analyze -n app
- 巡检:配置分析无告警、灰度切换有记录、mTLS 状态一致
小结
Mesh 的落地建议先在一个非核心业务试点:验证注入、灰度、mTLS 与可观测,再评估是否全量。别一上来就全集群启用。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。