自建EC2 Kubernetes集群Ingress无法访问求助
自建EC2 Kubernetes集群Ingress访问问题排查方案
以下是针对你场景的逐一排查步骤:
1. 确认NGINX Ingress Controller的服务暴露方式
执行命令查看Ingress Controller的服务类型:
kubectl get svc -n nginx
- 如果服务类型是
ClusterIP:该类型仅集群内部可访问,外部无法直接通过节点IP访问。需修改为NodePort(自建集群推荐),或确认Controller Pod是否用hostPort绑定了80/443端口。
修改服务类型命令:
修改后查看分配的NodePort端口(格式如kubectl patch svc nginx-nginx-ingress -n nginx -p '{"spec":{"type":"NodePort"}}'80:30XXX/TCP),确保工作节点安全组开放该端口。 - 如果服务类型是
NodePort:确认80对应的NodePort端口已在工作节点安全组中开放。
2. 检查Ingress Controller Pod状态与日志
- 确认Pod正常运行:
确保所有Pod处于kubectl get pods -n nginxRunning状态,重启次数为0。 - 查看Pod日志排查错误:
重点关注Ingress资源加载失败、后端服务连接超时类报错。kubectl logs -n nginx <nginx-ingress-controller-pod-name>
3. 验证Ingress资源的状态与配置
- 查看Ingress资源状态:
检查kubectl get ingress -n app1ADDRESS字段是否有值(应为工作节点IP或Ingress Controller服务地址),若为空说明Controller未识别该Ingress资源。 - 调整Ingress Class匹配规则:
部分新版本NGINX Ingress Controller要求用spec.ingressClassName替代annotation,可修改Ingress配置:
应用修改:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress1 namespace: app1 annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: ingressClassName: nginx # 替换原ingress.class annotation rules: - host: app1.alexthedeveloper.com.br http: paths: - pathType: Prefix path: "/app1" backend: service: name: svc1 port: number: 5678kubectl apply -f <ingress-file.yaml> -n app1
4. 检查工作节点的端口监听与防火墙
- 登录工作节点,检查目标端口是否被监听:
确保有NGINX相关进程在监听对应端口。netstat -tulpn | grep -E '(:80|:30[0-9]{3})' - 检查节点本地防火墙(Amazon Linux 2默认用firewalld):
确认80端口或NodePort端口已在firewall-cmd --list-allpublic区域开放。
5. 验证流量到达与后端连通性
- 本地验证DNS解析:
确认解析结果为工作节点的正确IP。nslookup app1.alexthedeveloper.com.br - 用curl查看详细访问日志:
根据错误信息定位问题:curl -v http://app1.alexthedeveloper.com.br/app1- 连接超时:检查安全组、节点防火墙或网络路由。
- 404 Not Found:检查rewrite规则或后端服务路径。
- 503 Service Unavailable:Ingress Controller无法连接后端服务,需排查集群内部网络。
- 进入Ingress Controller Pod测试后端连通性:
若无法访问,检查Service端点是否存在:kubectl exec -n nginx <nginx-pod-name> -it -- /bin/sh curl svc1.app1.svc.cluster.local:5678
确保kubectl get endpoints -n app1 svc1ENDPOINTS字段显示后端Pod的IP和端口,若为空则检查Deployment的Pod标签与Service selector是否匹配。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

