无法访问 Docker-Driver Windows 10 上的 Minikube(v1.18.1) Ingress
Could not access Minikube(v1.18.1) Ingress on Docker-Driver Windows 10
我的问题和一模一样。但再次复制问题供您参考::
我面临的问题是我无法使用它的 IP 在浏览器上访问 Minikube Ingress。我已经在 Windows 10 Home 上安装了 Minikube,并使用 docker 驱动程序(minikube start --driver=docker
)启动了 minikube。
System info:
Windows 10 Home
Minikube(v1.18.1)
Docker(driver for minikube) - Docker
engine version 20.10.5
我正在关注这个官方文档 - https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
首先,我在 Minikube 上通过 运行 下面的命令创建了部署。
kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0
已创建部署,如下图所示:在此处输入图像描述
接下来,我公开了我在上面创建的部署。为此,我 运行 下面的命令。
kubectl expose deployment web --type=NodePort --port=8080
这创建了一个服务,可以通过 运行 下面的命令看到:
kubectl get service web
该服务的截图如下所示:
- 我现在可以通过运行以下命令在浏览器上访问该服务:
minikube service web
在下面的截图中你可以看到我可以在浏览器上查看它。
- 接下来,我通过 运行 下面的命令创建了一个入口:
kubectl apply -f https://k8s.io/examples/service/networking/example-ingress.yaml
入口已创建,我可以通过 运行 以下命令验证它:
kubectl get ingress
截图如下:
入口 IP 列为 192.168.49.2。所以这意味着如果我应该在浏览器中打开它,那么它应该打开,但不幸的是没有。它显示无法访问站点。请参阅下面的屏幕截图。
这是什么问题。请给我一个解决方案?
我还在 etc\hosts 文件中添加了映射。
192.168.49.2 hello-world.info
然后我也尝试在浏览器上打开 hello-world.info 但没有成功。
在下图中,我对 hello-world.info 执行了 ping 命令,它的 IP 地址为 192.168.49.2。这表明 etc\hosts 映射是正确的:
我也 curl 到 minikube ip 和 hello-world.info 并且都超时了。见下图:
kubectl describe services web
提供了以下详细信息:
Name: web
Namespace: default
Labels: app=web
Annotations: <none>
Selector: app=web
Type: NodePort
IP: 10.100.184.92
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31880/TCP
Endpoints: 172.17.0.4:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
kubectl describe ingress example-ingress
给出以下输出:
Name: example-ingress
Namespace: default
Address: 192.168.49.2
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
hello-world.info
/ web:8080 172.17.0.4:8080)
Annotations: nginx.ingress.kubernetes.io/rewrite-target: /
Events: <none>
这个问题似乎已经解决,按照以下说明(如评论中所述):
Once you setup the ingress with necessary change, i guess you are in
the powershell of windows with minikube running right? Make sure you
‘enable addons ingress’ and have a separate console running ‘minikube
tunnel’ as well. Also, add the hostname and ip address to windows’
host table. Then type ‘minikue ssh’ in powershell, it gives you
command line. Then you can ‘curl myapp.com’ then you should get
response as expected.
然而,在我的例子中,minikube 隧道在发出 minikube tunnel
命令时没有响应。 :
我无法 curl hello-world.info
即使通过 minikube ssh
。请帮忙!
在Windows
经过一段时间后,我得出结论,在 Windows10-Home 上,ingress 与 Docker 存在一些冲突。如果我们想暴露 NodePort 类型的服务,一切正常,但 Ingress 很麻烦。
此外,我尝试在 Windows 10 中使用 Ubuntu 设置 WSL 2,但没有成功。
最后,以下在 Windows10 主页上为 Minikube 的 Ingress 工作:
- 安装VirtualBox
- 取消选中
Control Panel -> Programs -> Turn Windows Features on and off (under Programs and Features)
中的 Virtual Machine Platform 和 Windows Hypervisor Platform 选项,然后单击确定。如果出现提示,请重新启动计算机。
- 现在,在新cmd中执行以下命令
minikube delete
minikube start --driver=virtualbox
如果 minikube start --driver=virtualbox
不起作用,则使用 minikube start --driver=virtualbox --no-vtx-check
。
这个过程解决了我的问题,入口在我的 Windows 10 Home Minikube 上工作正常。
上Ubuntu
最后,Ubuntu 上的 Docker 本质上无缝支持 Minikube Ingress,没有任何故障。
我的问题和
我面临的问题是我无法使用它的 IP 在浏览器上访问 Minikube Ingress。我已经在 Windows 10 Home 上安装了 Minikube,并使用 docker 驱动程序(minikube start --driver=docker
)启动了 minikube。
System info:
Windows 10 Home
Minikube(v1.18.1)
Docker(driver for minikube) - Docker engine version 20.10.5
我正在关注这个官方文档 - https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
首先,我在 Minikube 上通过 运行 下面的命令创建了部署。
kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0
已创建部署,如下图所示:在此处输入图像描述
接下来,我公开了我在上面创建的部署。为此,我 运行 下面的命令。
kubectl expose deployment web --type=NodePort --port=8080
这创建了一个服务,可以通过 运行 下面的命令看到:
kubectl get service web
该服务的截图如下所示:
- 我现在可以通过运行以下命令在浏览器上访问该服务:
minikube service web
在下面的截图中你可以看到我可以在浏览器上查看它。
- 接下来,我通过 运行 下面的命令创建了一个入口:
kubectl apply -f https://k8s.io/examples/service/networking/example-ingress.yaml
入口已创建,我可以通过 运行 以下命令验证它:
kubectl get ingress
截图如下:
入口 IP 列为 192.168.49.2。所以这意味着如果我应该在浏览器中打开它,那么它应该打开,但不幸的是没有。它显示无法访问站点。请参阅下面的屏幕截图。
这是什么问题。请给我一个解决方案?
我还在 etc\hosts 文件中添加了映射。
192.168.49.2 hello-world.info
然后我也尝试在浏览器上打开 hello-world.info 但没有成功。
在下图中,我对 hello-world.info 执行了 ping 命令,它的 IP 地址为 192.168.49.2。这表明 etc\hosts 映射是正确的:
我也 curl 到 minikube ip 和 hello-world.info 并且都超时了。见下图:
kubectl describe services web
提供了以下详细信息:
Name: web
Namespace: default
Labels: app=web
Annotations: <none>
Selector: app=web
Type: NodePort
IP: 10.100.184.92
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31880/TCP
Endpoints: 172.17.0.4:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
kubectl describe ingress example-ingress
给出以下输出:
Name: example-ingress
Namespace: default
Address: 192.168.49.2
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
hello-world.info
/ web:8080 172.17.0.4:8080)
Annotations: nginx.ingress.kubernetes.io/rewrite-target: /
Events: <none>
这个问题似乎已经解决,按照以下说明(如评论中所述):
Once you setup the ingress with necessary change, i guess you are in the powershell of windows with minikube running right? Make sure you ‘enable addons ingress’ and have a separate console running ‘minikube tunnel’ as well. Also, add the hostname and ip address to windows’ host table. Then type ‘minikue ssh’ in powershell, it gives you command line. Then you can ‘curl myapp.com’ then you should get response as expected.
然而,在我的例子中,minikube 隧道在发出 minikube tunnel
命令时没有响应。 :
我无法 curl hello-world.info
即使通过 minikube ssh
。请帮忙!
在Windows
经过一段时间后,我得出结论,在 Windows10-Home 上,ingress 与 Docker 存在一些冲突。如果我们想暴露 NodePort 类型的服务,一切正常,但 Ingress 很麻烦。
此外,我尝试在 Windows 10 中使用 Ubuntu 设置 WSL 2,但没有成功。
最后,以下在 Windows10 主页上为 Minikube 的 Ingress 工作:
- 安装VirtualBox
- 取消选中
Control Panel -> Programs -> Turn Windows Features on and off (under Programs and Features)
中的 Virtual Machine Platform 和 Windows Hypervisor Platform 选项,然后单击确定。如果出现提示,请重新启动计算机。 - 现在,在新cmd中执行以下命令
minikube delete
minikube start --driver=virtualbox
如果 minikube start --driver=virtualbox
不起作用,则使用 minikube start --driver=virtualbox --no-vtx-check
。
这个过程解决了我的问题,入口在我的 Windows 10 Home Minikube 上工作正常。
上Ubuntu
最后,Ubuntu 上的 Docker 本质上无缝支持 Minikube Ingress,没有任何故障。