删除EKS Ingress后AWS ALB监听器未自动移除问题求助
问题原因分析
- ALB删除保护限制:原Ingress配置了
alb.ingress.kubernetes.io/load-balancer-deletion-protection: "true"注解,该注解会阻止AWS ALB Controller对ALB执行修改或清理监听器绑定规则的操作。当旧Ingress(绑定first-test-api服务)被Helm替换删除后,Controller无法自动更新ALB上的旧监听器关联。 - Helm资源的独立性:将Chart从
test-api重命名为main-api后,新的first-main-api相关K8s资源(包括Ingress)与旧的first-test-api资源完全独立。Helm会删除旧Ingress,但受限于ALB的删除保护,Controller无法同步更新ALB的监听器配置。
解决办法
方法一:临时关闭删除保护触发自动同步
- 编辑当前生效的Ingress资源(对应
first-main-api的Ingress),将删除保护注解修改为:alb.ingress.kubernetes.io/load-balancer-deletion-protection: "false" - 等待1-2分钟,让AWS ALB Controller完成同步,此时旧的监听器绑定会被自动清理,新服务的绑定会生效。
- 同步完成后,再将注解改回
"true",重新启用ALB删除保护。
方法二:确认新Ingress配置覆盖旧规则
- 检查新Ingress的
spec.rules段,确保包含test-api.mydomain.com的Host配置,且后端指向first-main-api服务,示例配置如下:spec: rules: - host: test-api.mydomain.com http: paths: - path: / pathType: Prefix backend: service: name: first-main-api port: number: 80 - 如果新Ingress未配置该Host,Controller不会自动修改旧监听器,需补充配置后再按方法一临时关闭删除保护触发同步。
方法三:清理残留的旧Ingress资源
- 执行命令确认旧Ingress是否已被Helm删除:
kubectl get ingress - 如果旧的
first-test-api对应Ingress仍存在,执行删除命令:kubectl delete ingress <旧Ingress名称> - 之后按方法一临时关闭删除保护,让Controller同步清理ALB监听器绑定。
内容的提问来源于stack exchange,提问作者Kostas Demiris
相关产品推荐
相关产品推荐

