3. Istio多集群部署模式详解:主-远程模式(Primary-Remote)

主-远程模式(Primary-Remote)是 Istio 多集群部署中最常用的架构之一。该模式通过一个主集群(Primary Cluster)集中管理控制面,而远程集群(Remote Cluster)仅运行数据面组件,从而在降低资源消耗的同时,实现跨集群的服务连通与流量治理。

3.1 架构原理

在 Primary-Remote 模式下,主集群 部署完整的 Istio 控制面组件(istiod、Ingress/Egress Gateway),而 远程集群 仅部署数据面组件(Envoy Sidecar、Ingress/Egress Gateway),并通过网络隧道与主集群的控制面通信。

核心特征:
  • 控制面集中化: 所有集群的配置下发、证书签发、服务发现均由主集群的 istiod 统一管理。
  • 数据面分布式: 远程集群的 Envoy 代理通过 Kubernetes API Server 或 Istio 的 East-West Gateway 与主集群建立长连接。
  • 网络要求: 主集群与远程集群之间需要网络互通(通常通过 VPN、VPC Peering 或专用网络链路)。
Primary-Remote 架构总览 主集群(Primary Cluster) istiod Pilot | Citadel | Galley Envoy Sidecar / Gateway Kubernetes API Server 远程集群(Remote Cluster) Envoy Sidecar 仅数据面,无控制面 East-West Gateway Kubernetes API Server XDS 配置下发 服务发现同步 跨集群流量 远程集群不运行 istiod,所有控制面逻辑由主集群统一处理 远程集群通过 East-West Gateway 与主集群建立安全隧道

3.2 组件通信流程

Primary-Remote 模式的组件通信分为 控制面通信 和 数据面通信 两个层面:

通信类型 源组件 目标组件 协议/端口 说明
XDS 配置下发 主集群 istiod 远程集群 Envoy gRPC (15012) 通过 East-West Gateway 或直连 API Server 代理
证书签发 主集群 istiod (Citadel) 远程集群 Envoy gRPC (15014) 通过 CSR 请求获取工作负载证书
服务发现 远程集群 API Server 主集群 istiod HTTPS (6443) istiod 通过 Remote Secret 访问远程集群 API
跨集群流量 远程集群 Envoy 主集群 Envoy mTLS (隧道) 通过 East-West Gateway 建立 L4 隧道
关键通信路径: 远程集群的 Envoy 启动时,会通过 Kubernetes DNS 解析主集群 istiod 的 Cluster IP 或 LoadBalancer IP,建立长连接。如果网络隔离,则通过 East-West Gateway 的 SNI 路由进行代理。

3.3 证书分发机制

Istio 在 Primary-Remote 模式下使用 双向 TLS(mTLS) 保证通信安全。证书分发遵循以下流程:

  1. 根证书生成: 主集群的 istiod(Citadel 组件)生成自签名根证书(Root CA),并保存为 Kubernetes Secret。
  2. 远程集群注册: 管理员在主集群创建 RemoteSecret,包含远程集群的 API Server 访问凭证。
  3. 工作负载证书签发: 远程集群的 Envoy 启动时,通过 gRPC 向主集群 istiod 发送 CSR(证书签名请求)。
  4. 证书分发: istiod 验证请求后,签发短期证书(默认 24 小时),并通过 XDS 通道下发到远程 Envoy。
  5. 证书轮换: Envoy 在证书过期前自动发起轮换请求,istiod 重新签发。
证书分发流程 1. 根证书生成 istiod 自签名 Root CA 2. 远程集群注册 创建 RemoteSecret 3. CSR 请求 Envoy → istiod 4. 证书签发 istiod 验证并签发 5. 证书轮换(自动) Envoy 在证书过期前自动发起轮换请求 轮换周期 24h 证书通过 XDS 通道下发,使用 mTLS 加密传输 远程集群无需存储根证书私钥,仅保留签发后的工作负载证书

3.4 部署配置示例

以下是在主集群上创建 RemoteSecret 的典型配置:

# 在主集群上创建远程集群的访问凭证
istioctl x create-remote-secret \
  --name=remote-cluster-1 \
  --namespace=istio-system \
  --kubeconfig=/path/to/remote-kubeconfig.yaml \
  --type=remote \
  | kubectl apply -f - -n istio-system
注意事项:
  • 远程集群的 kubeconfig 必须具有足够的 RBAC 权限(至少能读取 Service、Endpoint、Pod 资源)。
  • 如果主集群与远程集群网络不通,需要额外部署 East-West Gateway 并配置 SNI 路由。
  • 证书轮换期间,Envoy 会保持旧证书直到新证书生效,不会造成连接中断。

3.5 模式对比

对比维度 Primary-Remote 模式 Multi-Primary 模式
控制面数量 1 个(主集群) 每个集群 1 个
资源消耗 低(远程集群无控制面) 高(每个集群运行完整控制面)
配置一致性 强(统一下发) 需手动同步
故障隔离 主集群故障影响所有集群 单个集群故障不影响其他集群
适用场景 中心化治理、边缘集群 高可用、多区域独立运营
最佳实践: 对于大多数企业级多集群场景,推荐使用 Primary-Remote 模式作为起点。当业务规模增长到需要跨区域高可用时,再逐步演进到 Multi-Primary 模式。