搭建 nginx ingress 集群的核心是多实例部署、clb 直连 pod 优化网络路径及合理资源配置:每个实例使用独立 ingressclass 和专属 clb,启用 vpc-cni 与直连模式降低延迟 15%–30%,副本数 ≥3 并配置反亲和性与资源限制,结合注解实现 https 强制、cors、限流等精细化路由。

搭建 Nginx Ingress 集群提升流量转发能力,核心不是简单堆叠多个 Pod,而是通过多实例部署、网络路径优化和资源合理分配,实现高可用、可扩展、低延迟的南北向流量调度。
部署多个 Nginx Ingress 实例,隔离流量入口
单个 Ingress Controller 容易成为性能瓶颈或单点故障源。推荐按业务域、环境(如 prod/staging)、协议(HTTP/HTTPS)或地域划分,创建多个独立实例:
- 每个实例使用唯一 IngressClass 名称,避免规则冲突
- 每个实例绑定专属 CLB(云负载均衡),CLB 后端直接指向该实例的 Pod(非 NodePort)
- 通过控制台或 YAML 创建时,启用 使用 CLB 直连 Pod 模式,跳过 kube-proxy 和 NodePort 层,降低网络跳数
- Ingress 资源中显式指定
ingressClassName,确保路由规则只被目标实例处理
启用 VPC-CNI 并直连 Pod 提升吞吐效率
在 Global Router 网络模式下,默认流量需经节点转发,增加延迟与 CPU 开销。开启直通能力后,CLB 可直接访问 Pod IP:
- 集群必须已启用 VPC-CNI 插件(而非默认的 Terway 或 Flannel)
- 创建 Nginx Ingress 实例时勾选“使用 CLB 直连 Pod 模式”,底层会为 Pod 分配真实 VPC IP
- 该模式下,请求路径变为:CLB → Pod(无 iptables/NAT),实测延迟下降 15%–30%,尤其利于高并发 API 场景
按需配置 CLB 带宽与后端扩缩策略
入口带宽和控制器副本数需协同规划,避免“大马拉小车”或“小马拉大车”:
- 创建实例时,在控制台明确设置 CLB 的 带宽峰值(如 5 Gbps),而非使用共享带宽
- Nginx Ingress Controller 的 Deployment 副本数建议 ≥3,并配合反亲和性(
podAntiAffinity)分散到不同可用区节点 - 为 Controller Pod 设置合理的 CPU request/limit(如 2c/4c),避免因资源争抢导致 reload 延迟或配置不生效
- 监控
nginx_ingress_controller_nginx_process_requests_total和nginx_ingress_controller_ssl_expire_time_seconds等指标,动态调整副本
结合 Annotations 实现精细化路由与安全加固
仅靠基础路由远远不够,需利用注解释放 Nginx Ingress 的深度能力:
- 强制 HTTPS:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true",避免 HTTP 明文传输 - 自动 www 重定向:
nginx.ingress.kubernetes.io/from-to-www-redirect: "true",统一域名入口 - 跨域支持(CORS):
nginx.ingress.kubernetes.io/enable-cors: "true",配合cors-allow-origin精确控制来源 - 限流防刷:
nginx.ingress.kubernetes.io/limit-rps: "100",保护后端服务免受突发流量冲击











