AWS EKS中Service的LoadBalancer External IP未填充Ingress地址问题
AWS EKS Service LoadBalancer External IP 未填充 & Ingress 配置问题排查
核心问题定位
你的配置中缺少关键的Service资源:
app.yaml仅定义了Deployment,没有创建对应Service,导致Ingress无法找到后端服务,同时你提到的LoadBalancer类型Service完全未定义。- Ingress本身不会生成External IP,对外暴露的IP来自Ingress Controller的LoadBalancer Service(比如Nginx Ingress Controller对应的Service)。
分步解决
1. 补全应用Service配置
给你的Deployment创建Service(ClusterIP类型供Ingress转发,或LoadBalancer类型直接暴露应用),示例YAML:
--- apiVersion: v1 kind: Service metadata: name: p-app-ezycards namespace: production labels: app: p-app-ezycards spec: type: ClusterIP # 若需直接暴露应用,替换为 LoadBalancer selector: app: p-app-ezycards # 需与Deployment的pod标签匹配 ports: - name: http port: 80 targetPort: 80 # 需与容器端口一致
将上述内容添加到app.yaml或单独保存为app-service.yaml后执行:kubectl apply -f app-service.yaml -n production
2. 检查Nginx Ingress Controller状态
- 确认Ingress Controller已部署:
kubectl get pods -n kube-system -l app=nginx-ingress - 检查其Service的External IP:
kubectl get svc -n kube-system nginx-ingress-controller
若该Service无External IP,需排查:- 是否安装了AWS Load Balancer Controller(EKS中需要它来创建ELB)
- 集群节点IAM角色是否具备创建ELB的权限(需包含
AmazonEKSClusterPolicy等相关权限)
3. 验证Ingress资源状态
执行命令查看Ingress的事件与状态:kubectl describe ingress p-ezycards-app -n production
重点关注Events字段,排查是否存在"Service not found"、端口不匹配等错误。
4. 额外配置检查
- 确认Ingress的
kubernetes.io/ingress.class: "nginx"注释与集群中Ingress Controller的class一致 - 若使用LoadBalancer类型的应用Service,检查AWS是否有ELB创建失败的日志(可在AWS Console的EC2负载均衡器页面查看)
内容的提问来源于stack exchange,提问作者Gaurang Joshi
相关产品推荐
相关产品推荐

