访问EKS集群Ingress ALB超时问题求助
排查EKS ALB Ingress访问超时问题
确认Ingress Controller与Ingress资源的关联
- 执行
kubectl get ingressclass,验证alb类的controller字段为ingress.k8s.aws/alb,确保Controller监听该IngressClass。 - 检查Controller Pod状态:
kubectl get pods -n kube-system | grep aws-load-balancer-controller(根据实际命名空间调整),确认Pod处于Running状态。若Pod异常,查看启动日志排查权限或配置问题。
- 执行
查看Ingress资源的事件与状态
- 执行
kubectl describe ingress ingress-2048 -n game-2048,重点检查Events段:- 若没有ALB创建的相关事件(如“Successfully reconciled”),说明Controller未识别到该Ingress,需检查IngressClass匹配、Controller权限或资源标签。
- 若有错误事件(如子网选择失败、权限不足),根据提示修复对应问题。
- 确认Ingress的
Address字段是否已分配ALB域名:若为空,说明ALB未创建,问题根源在Controller或AWS资源权限;若有域名,继续排查ALB配置。
- 执行
检查ALB及目标组配置
- 登录AWS控制台找到对应ALB,确认状态为
active,若为provisioning需等待完成,若状态异常查看AWS事件日志。 - 查看目标组:
- 确认目标组类型为
IP(匹配Ingress注解alb.ingress.kubernetes.io/target-type: ip)。 - 检查目标组内的Pod IP健康状态:若健康检查失败,会导致ALB拒绝转发流量,需确认健康检查路径(默认是
/,若应用有特定健康检查路径需通过注解alb.ingress.kubernetes.io/healthcheck-path指定)。
- 确认目标组类型为
- 安全组配置:
- ALB安全组需允许0.0.0.0/0的80端口入站流量。
- Pod所在节点(或Pod网络,若用CNI)的安全组需允许ALB安全组的80端口访问。
- 登录AWS控制台找到对应ALB,确认状态为
验证Controller的IAM权限
- 若使用IRSA(IAM Roles for Service Accounts),检查Controller的ServiceAccount注解:
kubectl describe sa aws-load-balancer-controller -n kube-system,确认eks.amazonaws.com/role-arn指向正确的IAM角色。 - 确认该IAM角色已附加
AmazonEKSLoadBalancerControllerPolicy(或包含创建/管理ALB、安全组、目标组等资源的权限),且信任关系允许EKS OIDC身份访问。
- 若使用IRSA(IAM Roles for Service Accounts),检查Controller的ServiceAccount注解:
检查VPC子网标签
- 对于
internet-facing的ALB,Controller会自动选择带有kubernetes.io/role/elb: 1标签的公有子网。执行aws ec2 describe-subnets --filters "Name=tag:kubernetes.io/role/elb,Values=1",确认存在符合条件的子网,且子网路由表已关联Internet Gateway。
- 对于
内容的提问来源于stack exchange,提问作者Joseph DZhou
相关产品推荐
相关产品推荐

