3. 网关在K8s集群中的角色:Ingress Gateway、API Gateway、Service Mesh Gateway

在 Kubernetes 集群的流量治理体系中,网关并非单一组件,而是根据职责边界划分为三个层次:Ingress Gateway(南北向流量入口)、API Gateway(业务策略执行点)和 Service Mesh Gateway(服务网格边界代理)。理解这三者的角色差异,是进行网关 Pod 容量规划的前提。

3.1 三种网关的核心职责对比

维度 Ingress Gateway API Gateway Service Mesh Gateway
流量方向 南北向(外部 → 集群内部) 南北向 + 部分东西向 南北向 + 东西向边界
核心协议 HTTP/HTTPS、gRPC、TCP HTTP/HTTPS、gRPC、WebSocket HTTP/HTTPS、gRPC、TCP、TLS
主要功能 路由转发、TLS 终止、域名虚拟主机 认证鉴权、限流熔断、协议转换、API 版本管理 mTLS 双向认证、流量镜像、访问控制、协议嗅探
配置粒度 路由规则(Host/Path) API 级别(Method/Header/Query) 服务级别 + 端口级别
典型实现 nginx-ingress、traefik、HAProxy Kong、APISIX、Gloo Edge Istio Ingress/Egress Gateway、Envoy
升级影响范围 全局流量入口 业务 API 策略 网格内所有服务间通信
容量规划提示: 三种网关在集群升级窗口中的 Pod 容量规划策略不同。Ingress Gateway 关注连接数峰值和 TLS 卸载性能;API Gateway 关注策略执行延迟和限流队列深度;Service Mesh Gateway 关注 mTLS 握手开销和 sidecar 代理的 CPU 预留。

3.2 Ingress Gateway:集群流量入口

Ingress Gateway 是 Kubernetes 集群的标准流量入口,负责将外部请求按域名和路径规则分发到内部 Service。在升级窗口期间,它是流量中断风险最高的组件。

  • 职责边界: 仅处理 7 层路由和 TLS 卸载,不涉及业务逻辑。
  • 容量关键指标: 并发连接数、每秒请求数(RPS)、TLS 握手速率、连接池大小。
  • 升级风险: 滚动升级期间连接断开、优雅关闭超时、路由规则同步延迟。
  • 规划要点: 至少保留 2 个冗余副本,配置 PodDisruptionBudget(PDB)确保最小可用数。

3.3 API Gateway:业务策略执行点

API Gateway 位于 Ingress Gateway 之后,承担业务级流量治理职责。它执行认证、限流、配额、请求转换等策略,是容量规划中 CPU 和内存消耗最密集的网关层。

  • 职责边界: 处理业务策略,通常与 Ingress Gateway 串联部署。
  • 容量关键指标: 策略执行延迟(P99)、限流计数器内存占用、插件链执行时间、上游连接复用率。
  • 升级风险: 策略配置热更新失败、限流状态丢失、插件兼容性问题。
  • 规划要点: 预留 20%-30% 的 CPU 余量应对策略计算峰值;使用分布式限流时需考虑 Redis/Etcd 连接池容量。

3.4 Service Mesh Gateway:网格边界代理

Service Mesh Gateway(如 Istio Ingress/Egress Gateway)是服务网格的边界代理,负责网格内外的流量隔离和安全通信。它通常基于 Envoy 实现,具备完整的 mTLS 和访问控制能力。

  • 职责边界: 网格入口(Ingress)和出口(Egress)流量控制,支持协议嗅探和自动 mTLS。
  • 容量关键指标: mTLS 握手速率、证书轮换频率、Envoy 线程模型下的 worker 数量、连接数/请求数比例。
  • 升级风险: Envoy 版本升级导致配置兼容性变化、mTLS 证书过期、Egress 流量中断。
  • 规划要点: 根据网格规模调整 Envoy worker 线程数(通常为 2-4);为 mTLS 握手预留额外 CPU 资源(约 0.1-0.3 core/1000 TPS)。

3.5 三种网关的部署拓扑关系

下图展示了三种网关在典型 K8s 集群中的部署层次和流量路径。理解这个拓扑有助于在升级窗口期间确定网关 Pod 的依赖关系和升级顺序。

三种网关在 K8s 集群中的部署拓扑 外部用户 / 客户端 Ingress Gateway nginx-ingress / traefik / HAProxy API Gateway Kong / APISIX / Gloo Edge Service Mesh Ingress Gateway Istio Ingress Gateway (Envoy) 服务网格内部 (Sidecar Proxy + 业务 Pod) mTLS 通信 / 流量镜像 / 访问控制 Service Mesh Egress Gateway 外部服务出口控制 升级顺序建议:先升级 Service Mesh Gateway → API Gateway → Ingress Gateway,确保下游策略先就绪

3.6 升级窗口中的网关角色差异

在集群升级窗口期间,三种网关的升级策略和容量规划存在显著差异。下表总结了关键区别:

升级维度 Ingress Gateway API Gateway Service Mesh Gateway
滚动升级策略 maxSurge=1, maxUnavailable=0 maxSurge=1, maxUnavailable=1(需预热) maxSurge=0, maxUnavailable=1(严格顺序)
优雅关闭超时 30-60s(等待连接耗尽) 60-120s(等待策略执行完成) 90-180s(等待 mTLS 握手完成)
Pod 副本数下限 2(生产环境建议 3+) 2(考虑限流状态共享) 2(考虑证书缓存)
CPU 预留策略 按峰值连接数 × 0.5 core/10K 连接 按峰值 RPS × 0.1 core/1000 RPS 按 mTLS 握手速率 × 0.2 core/1000 TPS
内存预留策略 连接池大小 × 16KB + 路由表大小 限流计数器 + 插件缓存 + 上游连接池 Envoy 连接池 + 证书缓存 + 访问日志缓冲区
常见误区: 不要将三种网关的容量规划混为一谈。Ingress Gateway 的瓶颈通常在连接数,API Gateway 的瓶颈在 CPU 和内存,Service Mesh Gateway 的瓶颈在 mTLS 握手和 Envoy worker 线程数。升级窗口期间,应分别制定 Pod 副本数和资源预留策略。

3.7 网关角色对容量规划的影响总结