在 Linux 上的“本地主机”处访问 minikube 中正在运行的应用程序

时间:2021-03-13 22:01:48

标签: docker kubernetes localhost minikube nginx-ingress

我在 Windows(WSL2 和本机)和 macOS(Intel 和 M1)中使用 --driver=dockerminikube tunnel,这使得在 minikube 集群中运行的应用程序在应用后可以在 localhost 的浏览器中访问ingress-nginx

为了使事情在 Linux、macOS 和 Windows 之间保持一致,原因列表与问题无关,我想在 Linux(特别是 Ubuntu/Pop!_OS)中做同样的事情。

>

我知道 Docker 在 Linux 中的网络与在 macOS 和 Windows 中的工作方式不同,这可能是导致问题的原因。

对于 macOS 和 Windows,我通常只使用以下内容,无论是否使用 Docker Desktop:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.44.0/deploy/static/provider/cloud/deploy.yaml

对于 Linux,我尝试了三种不同的方法:

# the recommended method for minikube (which doesn't work in macOS nor WIndows if using --driver=docker)
minikube addons enable ingress

# Docker Desktop
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.44.0/deploy/static/provider/cloud/deploy.yaml

# Bare Metal
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.44.0/deploy/static/provider/baremetal/deploy.yaml

无论在Linux中是否使用minikube tunnel,结果都是一样的:“localhost拒绝连接。”

所以我的问题是,这可能是 ingress-nginx 的问题,有没有办法让 minikubeingress-nginx 的组合为 localhost 处的应用程序提供服务在 Linux 中是否像在 Windows 和 macOS 中一样?

如果没有,我想我需要修改我的开发部署脚本来使这个例外,但如果可能的话我想避免这种情况。

1 个答案:

答案 0 :(得分:1)

经过简短的调查,我认为存在与 minikube--vm-driver=dockeringress 相关的广泛问题。而且它似乎影响所有平台,而不仅仅是您的特定情况。

github 上有 2 个与此相关的未解决问题。两者都是新鲜打开的:

1. Ingress on docker driver - minikube 1.16 - ERR_CONNECTION_REFUSED

2. docker: Ingress not exposed on MacOS

您可以使用另一个 --vm-driver 吗?