误删AWS Classic ELB后,K8s Ingress仍指向旧地址如何处理?
解决K8s Ingress仍绑定旧AWS Classic ELB的问题
核心处理步骤
K8s关联的AWS ELB由对应负载均衡控制器维护生命周期,手动删除ELB后控制器可能未自动触发重建,按以下步骤处理:
彻底重建Ingress资源
- 先导出当前Ingress配置备份:
kubectl get ing my-ingress-name -o yaml > ingress-backup.yaml - 删除现有Ingress:
kubectl delete ing my-ingress-name - 等待2-3分钟,让K8s控制器清理旧ELB的关联资源(如Service的目标组绑定)
- 重新应用Ingress配置:
kubectl apply -f ingress-backup.yaml
此时控制器会自动创建新Classic ELB,并更新Ingress的
ADDRESS字段。- 先导出当前Ingress配置备份:
重启AWS负载均衡控制器
若集群使用AWS Load Balancer Controller(原ALB Ingress Controller)管理ELB,重启控制器Pod可触发状态同步:kubectl rollout restart deployment aws-load-balancer-controller -n kube-system可通过日志观察重建动作:
kubectl logs -n kube-system deployment/aws-load-balancer-controller -f清理硬编码ELB注解
检查Ingress或关联Service是否存在强制绑定旧ELB的注解:kubectl describe ing my-ingress-name若发现
service.beta.kubernetes.io/aws-load-balancer-name这类注解,删除后重新应用配置:kubectl annotate ing my-ingress-name service.beta.kubernetes.io/aws-load-balancer-name- kubectl apply -f ingress-backup.yaml确认AWS侧旧ELB彻底删除
登录AWS控制台,确保旧ELB为彻底删除状态(而非仅停用),残留的旧ELB会导致控制器误判关联状态,无法创建新ELB。
注意:不要手动在AWS控制台创建ELB,K8s控制器会自动管理ELB生命周期,手动创建的ELB无法被K8s自动识别关联,反而引发状态冲突。
内容的提问来源于stack exchange,提问作者obiruby
相关产品推荐
相关产品推荐

