You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes集群外无法通过Nginx Ingress访问服务求助

Kubernetes集群Ingress外部访问故障排查步骤

1. 验证MetalLB配置与运行状态

  • 检查MetalLB IP池无地址冲突:在集群节点执行arping 192.168.50.115,或在Windows机器上执行arp -a,确认该IP对应的MAC地址属于集群节点而非其他设备
  • 确认MetalLB工作模式与组件状态:若为Layer2模式,执行kubectl get pods -n metallb-system查看speaker pod是否正常运行,查看节点日志kubectl logs -n metallb-system <speaker-pod-name>排查ARP通告相关报错
  • 验证Ingress-Nginx LoadBalancer服务状态:执行kubectl get svc -n ingress-nginx,确认EXTERNAL-IP为192.168.50.115,且PORT(S)列显示80:xxxx/TCP的NodePort映射正常

2. 检查集群节点防火墙规则

  • 临时关闭节点防火墙测试:执行systemctl stop firewalld(针对firewalld环境),若Windows机器可恢复访问,需添加规则放行Ingress-Nginx的NodePort端口及MetalLB相关流量
  • 检查iptables规则:执行iptables -L -n | grep <ingress-nodeport>,确认存在允许外部访问该端口的规则;同时排查是否有规则拦截ICMP(ping)流量

3. 排查Calico网络策略

  • 检查Ingress-Nginx命名空间网络策略:执行kubectl get networkpolicy -n ingress-nginx,确认未存在阻止192.168.50.0/25子网访问Ingress控制器Pod的策略
  • 确认Calico全局默认策略:检查Calico配置,确保全局规则允许子网内流量进入集群

4. 验证Windows机器本地设置

  • 临时关闭Windows防火墙测试:打开「Windows Defender防火墙」→「启用或关闭Windows Defender防火墙」,关闭后尝试访问
  • 检查Windows路由表:执行route print,确认192.168.50.0/25的路由指向正确网关,无异常路由条目
  • 测试底层连通性:ping任意集群节点IP,若无法连通则排查节点与Windows机器的物理/虚拟网络链路问题

5. 检查Ingress资源与后端配置

  • 确认Ingress域名配置:执行kubectl get ingress <ingress-name> -o yaml,查看spec.rules[0].host是否为http24-kube.docker-containers.local
  • 验证后端服务关联:执行kubectl get svc <httpd24-service-name>,确认服务已正确关联httpd24 Pod,且端口映射匹配Ingress配置

内容的提问来源于stack exchange,提问作者johnny bravo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:13:14