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

Nginx-Ingress无法暴露Kubernetes服务,访问域名提示连接被拒绝

根因说明

你部署的Ingress Nginx默认使用了适配云厂商环境的LoadBalancer类型Service,私有部署的Kubernetes集群没有云厂商提供的负载均衡实现,因此Ingress Nginx服务无法在宿主机上暴露80/443端口,导致本地访问域名时连接被拒绝。

排查验证

执行以下命令确认问题:

kubectl get svc -n ingress-nginx

正常会返回类似如下结果,ingress-nginx-controller的TYPE为LoadBalancer,EXTERNAL-IP列显示<pending>:

NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.96.xxx.xxx   <pending>     80:30080/TCP,443:30443/TCP   1h

解决方案

你可以根据使用场景选择以下任意一种方案:

方案1:修改Ingress Nginx Service为NodePort类型(推荐长期使用)

NodePort类型会将Service端口映射到宿主机端口,你可以直接手动指定映射到80/443端口(需确保宿主机80/443端口未被其他进程占用):

kubectl patch svc ingress-nginx-controller -n ingress-nginx -p '{"spec":{"type":"NodePort","ports":[{"name":"http","port":80,"nodePort":80},{"name":"https","port":443,"nodePort":443}]}}'

配置完成后无需修改hosts文件,直接访问域名即可正常响应。

方案2:配置Ingress Nginx使用hostNetwork模式

让Ingress Nginx Pod直接共享宿主机网络栈,直接监听宿主机的80/443端口:

kubectl patch deployment ingress-nginx-controller -n ingress-nginx -p '{"spec":{"template":{"spec":{"hostNetwork":true,"dnsPolicy":"ClusterFirstWithHostNet"}}}}'

执行后Ingress Nginx Pod会自动重启,重启完成后即可直接访问域名。

方案3:使用端口转发临时测试

如果仅需要临时验证功能,可以执行端口转发命令:

kubectl port-forward svc/ingress-nginx-controller -n ingress-nginx 80:80

命令保持前台运行期间即可正常访问,关闭命令后转发失效。

结果验证

配置完成后执行以下命令确认宿主机80端口已被监听:

ss -tulpn | grep :80

再执行curl访问billing.meetaza.dev和api.meetaza.dev即可正常获取返回结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:39:03