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

Ubuntu 18.04部署minikube后无法访问外部服务与Ingress求助

问题排查与解决方案

核心原因

你本地服务器curl能通是因为minikube的网络仅默认对宿主机(你的Ubuntu服务器)开放路由,公网/局域网外部请求到达你的服务器后,没有被转发到minikube内部的服务入口,所以无法访问。

分场景解决

场景1:使用Ingress方式访问

  1. 先确认Ingress组件已启用
    执行命令检查:
    minikube addons list | grep ingress
    如果输出为disabled,执行启用:
    minikube addons enable ingress
  2. 配置公网流量转发
    你之前单独用Nginx可以正常访问,优先推荐用Nginx做反向代理,配置方式如下:
    在你的服务器Nginx配置中新增虚拟主机:
server {
    listen 80;
    server_name my-host.com; # 替换成你的实际域名
    location / {
        proxy_pass http://192.168.47.2; # 你的minikube Ingress IP
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

配置完成后重载Nginx即可,外部访问域名就会被转发到minikube的Ingress入口。
如果不想用Nginx,也可以用iptables做端口转发:

# 开启IP转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# 配置80端口转发到minikube Ingress IP
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.47.2:80
iptables -t nat -A POSTROUTING -j MASQUERADE
  1. 确认服务器防火墙/安全组已开放80、443端口。

场景2:使用LoadBalancer/NodePort方式访问

  1. minikube默认不会给LoadBalancer类型服务分配对外可用的公网IP,需要先启动minikube tunnel:
    minikube tunnel --bind-address 0.0.0.0 &
  2. 你已经指定了nodePort为30000,需要确认服务器的30000端口已在防火墙/安全组放行,同时配置端口转发:
    iptables -t nat -A PREROUTING -p tcp --dport 30000 -j DNAT --to-destination $(minikube ip):30000
  3. 外部访问时直接访问http://你的服务器公网IP:30000即可。

验证步骤

配置完成后,先在本地电脑执行telnet 你的服务器公网IP 对应端口确认端口可达,再用浏览器访问即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:39:02