AKS集群Nginx Ingress Controller无法访问端点问题排查
AKS集群中Nginx Ingress Controller无法访问Ingress端点的排查与解决
问题描述
我在AKS集群中安装了Nginx Ingress Controller,但无法访问应用暴露的Ingress端点。初步发现Ingress端点被分配了某个节点的外部IP,而Ingress Controller Service的IP却不同,请问哪里操作出错了?
相关kubectl命令输出
查看Ingress Pod状态
$ kubectl get pods --all-namespaces | grep ingress kube-system ingress-nginx-58ftggg-4xc56 1/1 Running
查看默认命名空间下的Service
$ kubectl get svc kubernetes CLUSTERIP 172.16.0.1 <none>(ExternalIP) 443/TCP
查看Ingress资源
$ kubectl get ingress vault-ingress-documentation 10.145.13.456
描述Ingress资源详情
$ kubectl describe ingress vault-ingress-documentation Name:vault-ingress-documentation Namespace:corebanking Address:10.145.13.456 Default backend:default-http-backend:80 (<error:default-http-backend:80 not found)
查看kube-system命名空间下的Ingress Service
$ kubectl get services -n kube-system | grep ingress ingress-nginx Loadbalancer 172.16.160.33 10.145.13.456 80:30389/TCP,443:31812/TCP
问题分析与解决步骤
先澄清IP误解
从输出看,ingress-nginxLoadBalancer Service的ExternalIP就是10.145.13.456,和Ingress资源的Address完全一致——这个IP是AKS为LoadBalancer类型Service分配的公网/内网IP,并非节点IP,你之前的判断有误。核心故障点:Ingress配置缺失或错误
- 从
kubectl describe ingress的输出能看到default-http-backend:80 not found,说明当前Ingress没有配置有效的后端规则,也找不到兜底的默认后端。 - 你的
vault-ingress-documentation大概率没有配置正确的rules字段,导致Ingress不知道该把流量转发到哪个应用Service。
- 从
具体修复操作
- 补全Ingress规则配置:编辑你的Ingress YAML,添加指向应用Service的规则,示例如下:
spec: rules: - host: vault.your-domain.com # 可以用自定义域名,或者直接用IP访问时省略host http: paths: - path: / pathType: Prefix backend: service: name: vault-service # 替换成你的应用Service名称 port: number: 80 # 替换成应用Service的端口 - 确认应用Service状态:在
corebanking命名空间下执行kubectl get svc,检查对应的应用Service是否存在、端口是否正确、是否有Endpoints绑定。 - 处理默认后端问题:如果不需要兜底后端,确保Ingress有明确的规则即可;如果需要,可安装官方的
default-http-backend,或者检查Nginx Ingress Controller是否自带了默认后端Service(部分版本会在kube-system下创建ingress-nginx-defaultbackend)。 - 查看Ingress Controller日志排查:
日志里会显示规则加载是否成功、是否有流量转发错误。kubectl logs -n kube-system ingress-nginx-58ftggg-4xc56 - 验证网络权限:确认AKS对应的网络安全组(NSG)已经开放80/443端口,允许外部流量访问LoadBalancer的IP;同时检查集群内部的网络策略是否阻断了Ingress到应用Service的流量。
- 补全Ingress规则配置:编辑你的Ingress YAML,添加指向应用Service的规则,示例如下:
内容的提问来源于stack exchange,提问作者Bokambo
相关产品推荐
相关产品推荐

