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

更新ALB的inbound-cidrs注解时出现合并错误,求解决方案

解决AWS ALB Ingress Controller的inbound-cidrs冲突问题

问题描述

我在Ingress的metadata.annotations中配置了授权访问的CIDR列表:

metadata:
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/inbound-cidrs: xxx.xxx.xxx.xxx/32, xxx.xxx.xxx.xxx/32, etc.
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80,"HTTPS":443}]'

添加新CIDR并重新部署后,aws-load-balancer-controller报错:

failed to merge listenPort config for port: 443: conflicting inbound-cidrs

已尝试rollout restart重启控制器,但错误仍存在,请问如何成功应用新的CIDR注解?


解决步骤

  • 排查共享ALB的其他Ingress
    若多个Ingress通过alb.ingress.kubernetes.io/group.name注解共享同一ALB,不同Ingress的inbound-cidrs配置会产生冲突。执行以下命令查看同组Ingress:

    kubectl get ingress -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.annotations.alb\.ingress\.kubernetes\.io/group.name}{"\n"}{end}'
    

    确保同组所有Ingress的inbound-cidrs配置一致,或删除不再使用的冲突Ingress。

  • 清理旧Ingress关联资源
    残留的旧ALB规则可能导致合并失败,先删除当前Ingress,等待控制器清理资源后重新部署:

    kubectl delete ingress <你的Ingress名称>
    # 等待1-2分钟让控制器完成清理
    kubectl apply -f <更新后的Ingress配置文件>
    
  • 修正listen-ports注解格式
    原注解的JSON格式可能存在转义问题,改用更清晰的格式避免冲突:

    # 方式1:标准JSON字符串
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
    # 方式2:YAML块字符串
    alb.ingress.kubernetes.io/listen-ports: |
      [{"HTTP": 80}, {"HTTPS": 443}]
    
  • 强制控制器重新同步
    删除控制器的leader选举锁,触发全量配置同步:

    kubectl delete configmap -n kube-system aws-load-balancer-controller-leader
    

    控制器会自动重新选举leader并同步所有Ingress资源。

  • 校验CIDR格式合法性
    确保新增CIDR无格式错误,比如避免xxx.xxx.xxx.xxx/33这类无效掩码,或多余空格导致的解析问题。

内容的提问来源于stack exchange,提问作者Andrew Lien

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:05:20