第 12 章:在组织中扩展 Istio
本文梳理了 Istio 多集群服务网格的核心原理与实践,涵盖跨集群发现、连接、共同信任、东西向网关与高可用部署等关键能力,帮助企业级用户构建大规模、弹性与安全的服务网格基础设施。
多集群服务网格的价值与场景
多集群服务网格可提升团队隔离、故障边界、合规性、可用性与多云混合云能力。典型场景包括:
- 提高团队/业务隔离,降低单点故障影响
- 跨区域部署提升可用性与性能
- 满足合规与数据主权要求
- 支持多云/混合云架构
多集群模式主要有两类:
- 多集群服务网格:单一网格跨集群,统一流量治理与安全策略
- 网格联邦:多个独立网格互通,适合强隔离或多团队自治场景
本章聚焦多集群服务网格模式。
多集群服务网格的核心条件
要实现多集群服务网格,需满足以下三大条件:
- 跨集群工作负载发现:控制平面需能发现对等集群的服务与端点
- 跨集群网络连通性:工作负载间需有网络可达,常用东西向网关桥接
- 共同信任根:各集群需共享信任根,实现 mTLS 跨集群认证

若不希望集群间 API 互访,可采用网格联邦方案,参考 Gloo Mesh 等工具。
多集群部署模式
- 主 - 远程(单控制平面):资源消耗低,主控平面故障影响全网格
- 主 - 主(多控制平面):高可用,推荐生产环境
- 外部控制平面:适合云厂商托管场景
工作负载发现与安全
- 控制平面通过 ServiceAccount Token 认证访问远程集群 API
- 建议最小权限原则,合理配置 RBAC
- 可用插件式 CA 或外部 CA 实现共同信任

实践:多集群多网络高可用服务网格
以 Azure 两集群(west-cluster/east-cluster)为例,演示主 - 主高可用部署,跨网络通过东西向网关互通。
步骤一:基础设施与证书准备
- 创建两个独立网络的 Kubernetes 集群
- 生成根 CA 与各集群中间 CA,配置为
istio-system
命名空间下的cacerts
Secret
kwest create secret generic cacerts -n istio-system \
--from-file=ch12/certs/west-cluster/ca-cert.pem \
--from-file=ch12/certs/west-cluster/ca-key.pem \
--from-file=ch12/certs/root-cert.pem \
--from-file=ch12/certs/west-cluster/cert-chain.pem
步骤二:安装控制平面并标注网络
- 使用 IstioOperator 配置 meshID、clusterName、network
- 标注命名空间
topology.istio.io/network=west-network
/east-network
- 分别在两个集群安装 Istio 控制平面
步骤三:部署工作负载与服务
- 在 west-cluster 部署 webapp(含 stub catalog Service)
- 在 east-cluster 部署 catalog 服务
步骤四:跨集群发现与连接
- 使用
istioctl x create-remote-secret
生成对等集群访问 Secret,互相导入 - 安装东西向网关,配置
sni-dnat
路由模式和 SNI 自动穿透 - 配置 Gateway 资源暴露 15443 端口,启用
AUTO_PASSTHROUGH
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: cross-network-gateway
namespace: istio-system
spec:
selector:
istio: eastwestgateway
servers:
- port:
number: 15443
name: tls
protocol: TLS
tls:
mode: AUTO_PASSTHROUGH
hosts:
- "*.local"
步骤五:验证跨集群流量与负载均衡
- 入口网关流量可自动路由到对等集群服务
- 通过 locality-aware 配置实现优先本地、跨集群故障转移
for i in {1..10}; do curl --max-time 5 -s $EXT_IP \
-H "Host: simple-backend.istioinaction.io" | jq .body; done
- 通过 DestinationRule + outlierDetection 实现健康检查与优先级路由
步骤六:跨集群安全与访问控制
- 通过 AuthorizationPolicy 精细控制跨集群流量访问权限
- SPIFFE 证书链确保身份可验证
关键配置与调优建议
- 插件式 CA 证书简化共同信任配置,生产建议集成外部 CA
- 建议主 - 主多控制平面部署,提升高可用性
- 网络标签与东西向网关配置需与实际网络拓扑一致
- 使用 SNI 自动穿透简化跨集群流量路由,无需手动配置 VirtualService
- 结合 locality-aware 策略提升性能与容灾能力
总结
- Istio 多集群服务网格支持高可用、弹性与安全的跨集群服务治理
- 需关注工作负载发现、网络连通性与共同信任三大前提
- 东西向网关与 SNI 自动穿透极大简化跨集群流量管理
- 建议结合实际业务需求选择部署模式,合理配置安全与访问控制
参考文献
- Istio 官方文档 - istio.io
- Gloo Mesh 多集群管理 - solo.io
- Kubernetes RBAC - kubernetes.io
- Istio 多集群部署 - istio.io
- Azure Kubernetes Service - learn.microsoft.com