文章详情

亚马逊云12个月免费号 AWS EKS 负载均衡器控制器(AWS Load Balancer Controller)不创建 Ingress 诊断

亚马逊aws2026-08-04 15:42:47云代购网
{ "description": "排查 AWS EKS 负载均衡器控制器不创建 Ingress 的常见原因与处理顺序,覆盖 IngressClass、IRSA、子网标签、配额、账号风控和成本控制,帮助你快速定位卡点。", "content": "

AWS EKS 负载均衡器控制器不创建 Ingress 时,先别急着重装

很多人遇到 AWS EKS 负载均衡器控制器(AWS Load Balancer Controller)不创建 Ingress,第一反应是重新安装控制器。实际排障里,这一步往往最容易走偏。真正的问题通常不在“安装没装上”,而在Ingress 写法、控制器权限、子网标签、账号侧限制、资源配额这几层里。

如果你现在看到的是 Ingress 一直 Pending、事件里没有创建 ALB、控制器日志有报错但看不懂,先按下面顺序查。很多现场问题,不需要改代码,只要定位到是哪一层卡住,就能直接收敛。

先判断“没创建”还是“创建了但没绑定成功”。这两类问题的处理方式完全不同。

先区分三种常见现象

  • Ingress 对象已经创建,但没有生成 ALB:多半是控制器没识别到该 Ingress,或者权限/标签不满足。
  • Ingress 生成了,事件里一直 Pending:常见于子网标签、IAM 权限、配额、Webhook 或 AWS API 侧失败。
  • ALB 已创建,但访问失败:通常不是“没创建 Ingress”,而是后续监听器、目标组、后端 Pod、健康检查出问题。

先排除账号侧问题:购买、认证、充值、支付、风控、资源限制

如果你的 AWS 账号是刚开通不久,或者是通过企业采购流程、海外主体开户注册、代充值方式开通的,先看账号侧有没有阻断创建资源。这个步骤经常被忽略,但实际排障里非常关键。

  • 支付方式不可用:信用卡失效、账单地址不一致、付款失败,可能导致账号进入受限状态。
  • 风控审核未通过:新账号、异常登录、频繁切换地区或支付方式,都可能触发额外审核。
  • 资源配额太低:新账号常见的 ELB、EC2、vCPU、IP 地址配额不足,会直接影响 ALB 创建。
  • 欠费或账单异常:部分业务场景下,账号侧异常会让 API 调用失败,但表面看起来像控制器没工作。

如果你是企业用户,建议先确认三件事:账单账户是否正常、支付方式是否可扣款、对应区域是否已经放开资源创建权限。很多时候 Ingress 不创建,不是 Kubernetes 配置错了,而是 AWS 账号层面已经拦住了。

按这个顺序排查 AWS Load Balancer Controller 不创建 Ingress

1. 先看 Ingress 事件,不要只看 YAML

最直接的入口不是控制器日志,而是 Ingress 的事件。很多失败原因会直接写在事件里,比如找不到 IngressClass、没有合适子网、权限不足、Webhook 拒绝等。

  • 查看 Ingress:kubectl describe ingress -n <namespace> <ingress-name>
  • 重点看 Events 区域:是否有 FailedBuildModelRejectedAccessDeniedno suitable subnets 等信息。

2. 再看控制器日志,确认它有没有“接收到”这个 Ingress

亚马逊云12个月免费号 有些情况并不是创建失败,而是控制器根本没监听到对应资源。比如 IngressClass 不匹配,或者控制器只处理特定命名空间/标签。

  • 查看日志:kubectl logs -n kube-system deployment/aws-load-balancer-controller
  • 亚马逊云12个月免费号 重点找:是否有 ingress classreconcilewebhookfailed to build modelpermission denied

3. 检查 IngressClass 和注解是否一致

这是最常见的配置错误之一。很多人同时混用了旧注解和新字段,结果控制器没法判断应该处理哪个 Ingress。

  • 确认是否使用了 ingressClassName: alb,或者对应的 IngressClass 已正确创建。
  • 如果你还在用旧版注解,检查是否与当前控制器版本兼容。
  • 不要把 NGINX 的注解直接搬到 ALB 上,二者不通用。

4. 检查 AWS 账号权限和 IRSA

AWS Load Balancer Controller 依赖 IAM 权限。实际环境里,最常见的问题不是“没挂 IAM”,而是挂了但权限不够,或者 IRSA 配错了 OIDC、service account 名称、角色信任关系。

  • 确认 controller 的 ServiceAccount 是否绑定了正确的 IAM Role。
  • 确认 IAM Policy 是否包含创建/修改 ALB、Target Group、Listener、Security Group、Subnet 的权限。
  • 确认 EKS 集群已正确启用 OIDC,且信任关系里写的是当前集群对应的 service account。

5. 检查子网标签是否完整

ALB 创建失败,子网标签问题非常常见。尤其是新建 VPC、迁移环境、临时测试环境,很容易漏打标签。

  • 公网 ALB 通常需要子网标签:kubernetes.io/role/elb=1
  • 内网 ALB 通常需要子网标签:kubernetes.io/role/internal-elb=1
  • 还要确认子网属于正确的可用区,并且路由表符合预期。

如果你明明配置的是 internal ALB,但子网没有对应标签,控制器通常不会“自动猜测”,而是直接报错或一直不创建。

6. 看资源配额是否已满

在企业环境里,配额不足经常被误判成控制器故障。新账号、临时账号、测试账号尤其明显。

  • 检查 ELB/ALB 配额是否达到上限。
  • 检查 EC2 安全组、弹性网络接口、IP 地址等配额。
  • 如果是多环境共用一个账号,测试集群的历史资源没清理,也可能占满额度。

7. 检查 Webhook 和证书状态

AWS Load Balancer Controller 依赖 webhook 做校验和资源转换。Webhook 异常时,Ingress 可能看起来“创建了”,实际上被拒绝或无法正常处理。

  • 确认 webhook 服务和证书是否正常。
  • 亚马逊云12个月免费号 查看 kube-apiserver 是否有 admission 报错。
  • 如果刚升级控制器版本,注意 CRD 和 webhook 是否同步更新。

8. 确认后端 Service 和端口写法没有问题

有些 Ingress 没创建,不是控制器坏了,而是后端 Service 写法本身不合法。常见情况包括:

  • Service 的 targetPort 与 Pod 实际监听端口不一致。
  • 亚马逊云12个月免费号 Service 没有后端 Endpoints。
  • Ingress 指向了不存在的 Service 名称。
  • path、pathType、backend.service.port 配置与当前 API 版本不兼容。

最常见的错误,不是技术难,而是场景没对上

现象常见原因优先检查
Ingress 一直 Pending子网标签、权限、配额、Webhookkubectl describe ingress + controller 日志
没有生成 ALBIngressClass 不匹配、controller 没监听ingressClassName / 注解 / controller 状态
ALB 创建了但不可用后端 Service、Pod、健康检查异常Target Group、Endpoints、Pod 日志
只在新账号失败账号风控、支付方式、配额限制账单状态、资源配额、区域开通情况

不同业务场景下,排障重点不一样

测试环境

测试环境最容易出现的是“资源太散、费用不透明”。为了节省成本,很多团队会频繁创建和删除 Ingress,但忘了清理 ALB、Target Group、Security Group,最后反而把配额耗完。

  • 建议优先使用 internal ALB 做联调。
  • 定期清理废弃 Ingress 和历史目标组。
  • 不要把测试环境和生产环境混在同一个 AWS 账号里长期使用。

生产环境

生产环境更关注稳定和变更风险。很多线上问题不是第一次创建失败,而是升级控制器、变更 IAM 策略、修改子网标签后才暴露出来。

  • 升级前先在灰度集群验证。
  • 变更前
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系