You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从stable/nginx-ingress无缝迁移至kubernetes/ingress-nginx?

零停机迁移Ingress Controller至新版kubernetes/ingress-nginx的解决方案

方案一:让新旧控制器同时监听旧Ingress资源

这是实现双控制器并行路由的核心方案,通过配置新控制器兼容旧Ingress的instanceClassName,确保过渡期间流量不中断:

  • 部署新控制器时,通过Helm values配置让它同时监听nginx和nginx2两个Ingress类:
    controller:
      ingressClassResource:
        name: nginx2
        default: false
      watchIngressWithoutClass: false
      extraArgs:
        --watch-ingress-classes=nginx,nginx2
    
  • 部署完成后,直接访问新控制器的ELB对应域名,验证其能正常处理旧Ingress的请求
  • 调整DNS记录,逐步将流量切到新ELB(比如先设置50%流量权重,观察无异常后拉满;或把DNS TTL设为30秒以内加速生效)
  • 批量更新所有Ingress资源的instanceClassName为nginx2,命令示例:
    kubectl patch ingress --all -p '{"spec":{"ingressClassName":"nginx2"}}'
    
  • 监控旧控制器的请求量,确认无流量残留后,删除旧控制器和旧IngressClass

方案二:双Ingress并行部署

为每个服务维护两份Ingress配置,分别绑定新旧控制器,实现流量隔离并行:

  • 对现有每个绑定instanceClassName: nginx的Ingress,复制一份新Ingress,将instanceClassName改为nginx2,配置规则完全一致
  • 部署新控制器后,验证新Ingress能正常路由对应服务的流量
  • 更新DNS指向新ELB,此时新旧ELB分别处理对应Ingress的流量,无停机风险
  • 等待DNS完全生效(可通过nslookup等工具确认),再删除旧Ingress和旧控制器

关键注意事项

  • 确保新旧控制器的核心配置一致:SSL证书挂载、rewrite规则、超时参数、限流策略等,避免流量切换后出现服务异常
  • 迁移过程中实时监控两个控制器的QPS、错误率、响应时间等指标,确保服务状态稳定
  • 先在测试环境完整验证迁移流程,确认无问题后再推广到生产环境

内容的提问来源于stack exchange,提问作者Myles Merrell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:45:23