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

ACR镜像部署到AKS后外部IP访问报ERR_CONNECTION_TIMED_OUT如何解决

问题根因与排查解决步骤

你遇到的ERR_CONNECTION_TIMED_OUT错误核心原因是容器内实际监听的端口、Deployment声明的containerPort、Service配置的targetPort三者不匹配,或网络安全组规则未放通对应端口,按以下步骤逐一排查即可:

  • 第一步:确认容器内服务实际监听配置
    执行命令进入Pod内部:kubectl exec -it <你的Pod名称> -- /bin/bash
    执行端口查看命令:ss -tulpn
    确认服务进程监听地址为0.0.0.0:8080,而非127.0.0.1:8080或其他端口。

    你测试nginx时修改containerPort为8080仍报错的原因就是nginx默认仅监听80端口,修改containerPort不会同步修改nginx自身的监听配置,必须同步调整镜像内服务的启动监听端口才能匹配。针对你使用的NestJS应用,需修改启动代码为app.listen(8080, '0.0.0.0'),确保允许外部地址访问。

  • 第二步:验证Pod本地连通性
    执行端口转发命令:kubectl port-forward pod/<你的Pod名称> 8080:8080
    本地访问localhost:8080,如果无法访问说明容器内服务本身配置错误,优先修复镜像内的服务配置。
  • 第三步:检查Service端点配置
    执行命令:kubectl get endpoints my-test-service
    确认返回的ENDPOINTS列存在PodIP:8080的记录,如果为空说明Service的selector和Pod的label不匹配,需要核对两边的app标签值是否一致。
  • 第四步:检查AKS网络安全组(NSG)规则
    登录Azure控制台,找到AKS节点池所在子网关联的NSG,确认入站规则中允许来源为AzureLoadBalancer的请求访问8080端口,避免流量被NSG拦截。
  • 第五步:验证Service外部访问
    确认以上步骤无问题后,执行kubectl get svc my-test-service拿到EXTERNAL-IP,直接访问该IP的80端口即可,流量会自动转发到Pod的8080端口。

内容的提问来源于stack exchange,提问作者Sushant Saurav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:54:03