AKS公网负载均衡器部署OpenFaaS无法连接问题求助
问题分析与解决方案
核心问题定位
从错误信息来看,本地访问OpenFaaS的HTTPS地址时出现TCP连接超时,大概率是网络连通性受阻,可能涉及NSG(网络安全组)、Azure防火墙、负载均衡器/Ingress配置这几个核心环节。
第一步:排查基础网络连通性
- 先验证本地到负载均衡器公网IP的连通性:
- 执行
ping <LB公网IP>,确认是否能收到响应 - 执行
nc -zv <LB公网IP> 443或telnet <LB公网IP> 443,检查443端口是否开放(因Ingress配置了TLS,走HTTPS协议)
- 执行
- 检查AKS集群的节点NSG:确保入站规则允许来自你本地IP的80/443端口流量
- 检查Azure防火墙(若集群已部署):查看是否存在拦截该公网LB入站/出站流量的规则
第二步:修正负载均衡器与Ingress配置
你的配置存在几个潜在问题,需调整:
- LoadBalancer Service端口不匹配:
现有配置仅开放80端口,但Ingress启用了TLS(HTTPS),需同时开放443端口,修改后的配置如下:apiVersion: v1 kind: Service metadata: name: loadbalancer spec: type: LoadBalancer ports: - protocol: TCP port: 80 targetPort: 80 - protocol: TCP port: 443 targetPort: 443 - Ingrewrite规则错误:
现有rewrite-target: /$2搭配path: /faas无法正确匹配路径,需调整为:metadata: annotations: nginx.ingress.kubernetes.io/rewrite-target: /$1 spec: rules: - host: (...).com http: paths: - backend: service: name: openfaas port: number: 80 path: /faas(/|$)(.*) pathType: Prefix - 确认Ingress Controller关联关系:
你创建的loadbalancerService需指向Ingress Controller的容器端口(通常nginx-ingress为80和443);同时要确认openfaasService确实存在,且端口配置与Ingress后端一致。
第三步:Azure防火墙拦截的绕过方法
如果你的AKS集群配置了强制所有流量通过Azure防火墙(即启用Azure Firewall Manager强制路由),直接暴露的公网LB流量会被丢弃。可通过以下方式绕过:
- 添加防火墙允许规则:将公网LB的IP地址加入Azure防火墙的入站/出站允许列表,放行80/443端口流量
- 关联AKS Public IP前缀:将公网LB的IP绑定到AKS的Public IP前缀,让防火墙识别该流量为集群合法流量并放行
- 调整出站路由策略:若业务允许,修改AKS的出站路由配置,允许公网LB流量直接出站(无需经过Azure防火墙)——此方式会降低安全性,需谨慎使用
关于是否切换为内网负载均衡器
如果业务不需要OpenFaaS暴露到公网,或必须通过Azure防火墙中转流量,切换为内网负载均衡器+防火墙端口转发是合规方案。但如果需要公网直接访问,优先排查上述连通性和配置问题,无需直接切换内网LB。
内容的提问来源于stack exchange,提问作者p_c
相关产品推荐
相关产品推荐

