无法在 Docker-Driver Windows 10 上访问 Minikube(v1.18.1) Ingress

vag*_*i k 4 tunnel docker kubernetes minikube nginx-ingress

我的问题与此完全相同。但再次复制问题供您参考::

\n

我面临的问题是我无法使用浏览器的 IP 访问 Minikube Ingress。我已经在 Windows 10 Home 上安装了 Minikube,并使用 docker driver( ) 启动了 minikube minikube start --driver=docker

\n
\n

系统信息:

\n

Windows 10 家庭版

\n

Minikube(v1.18.1)

\n

Docker(minikube 驱动程序)- Docker\n引擎版本 20.10.5

\n
\n

我正在关注这个官方文档 - https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/

\n

首先,我通过在 Minikube 上运行以下命令来创建部署。

\n

kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0

\n

部署已创建,如下图所示:在此处输入图像描述

\n

在此输入图像描述

\n

接下来,我公开了上面创建的部署。为此,我运行了以下命令。

\n

kubectl expose deployment web --type=NodePort --port=8080

\n

这创建了一个服务,可以通过运行以下命令查看该服务:

\n

kubectl get service web\n服务截图如下:\n在此输入图像描述

\n
    \n
  1. 我现在可以通过运行以下命令在浏览器上访问该服务:
  2. \n
\n

minikube service web

\n

在下面的屏幕截图中,您可以看到我可以在浏览器上查看它。

\n

在此输入图像描述

\n
    \n
  1. 接下来,我通过运行以下命令创建了一个 Ingress:
  2. \n
\n

kubectl apply -f https://k8s.io/examples/service/networking/example-ingress.yaml

\n

入口已创建,我可以通过运行以下命令来验证它:

\n

kubectl get ingress\n下面给出了此屏幕截图:\n在此输入图像描述

\n

入口 IP 列为 192.168.49.2。所以这意味着如果我应该在浏览器中打开它,那么它应该打开,但不幸的是没有。显示无法访问网站。请参阅下面的屏幕截图。

\n

在此输入图像描述

\n

问题是什么。请为我提供解决方案吗?

\n

我还在 etc\\hosts 文件中添加了映射。

\n

192.168.49.2 hello-world.info

\n

然后我也尝试在浏览器上打开 hello-world.info 但没有成功。

\n

在下图中,我已对 hello-world.info 执行 ping 操作,其 IP 地址为 192.168.49.2。这表明 etc\\hosts 映射是正确的:

\n

在此输入图像描述

\n

我还对 minikube ip 和 hello-world.info 进行了curl操作,但两者都超时了。见下图:

\n

在此输入图像描述

\n

提供kubectl describe services web以下详细信息:

\n
Name:                     web\nNamespace:                default\nLabels:                   app=web\nAnnotations:              <none>\nSelector:                 app=web\nType:                     NodePort\nIP:                       10.100.184.92\nPort:                     <unset>  8080/TCP\nTargetPort:               8080/TCP\nNodePort:                 <unset>  31880/TCP\nEndpoints:                172.17.0.4:8080\nSession Affinity:         None\nExternal Traffic Policy:  Cluster\nEvents:                   <none>\n
Run Code Online (Sandbox Code Playgroud)\n

给出kubectl describe ingress example-ingress以下输出:

\n
Name:             example-ingress\nNamespace:        default\nAddress:          192.168.49.2\nDefault backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)\nRules:\n  Host              Path  Backends\n  ----              ----  --------\n  hello-world.info\n                    /   web:8080   172.17.0.4:8080)\nAnnotations:        nginx.ingress.kubernetes.io/rewrite-target: /$1\nEvents:             <none>\n
Run Code Online (Sandbox Code Playgroud)\n

按照以下说明(如评论中发布的),该问题似乎已解决:

\n
\n

一旦你设置了入口并进行了必要的更改,我猜你已经在 Windows 的 powershell 中且 minikube 运行正确了?确保\n\xe2\x80\x98启用插件 ingress\xe2\x80\x99 并有一个单独的控制台运行\xe2\x80\x98minikube\ntunnel\xe2\x80\x99。另外,将主机名和 IP 地址添加到 windows\xe2\x80\x99\nhost 表中。然后在powershell中输入\xe2\x80\x98minikue ssh\xe2\x80\x99,它会给你\n命令行。然后你可以 \xe2\x80\x98curl myapp.com\xe2\x80\x99 然后你应该得到\n预期的响应。

\n
\n

然而,就我而言,minikube 隧道在发出命令后没有响应minikube tunnel:

\n

在此输入图像描述

\n

我什至无法curl hello-world.info通过minikube ssh。请帮忙!

\n

vag*_*i k 8

在 Windows 上

经过一段时间后,我得出的结论是 Ingress 与 Windows10-Home 上的 Docker 存在一些冲突。如果我们想公开 NodePort 类型的服务,一切都很好,但 Ingress 很麻烦。

此外,我尝试在 Windows 10 中使用 Ubuntu 设置 WSL 2,但没有成功。

最后,以下内容适用于 Windows10 Home 上的 Minikube Ingress:

  • 安装VirtualBox
  • 取消选中“虚拟机平台”“Windows 虚拟机管理程序平台”选项Control Panel -> Programs -> Turn Windows Features on and off (under Programs and Features),然后单击“确定”。如果出现提示,请重新启动计算机。
  • 现在,在新的cmd中执行以下命令
minikube delete
minikube start --driver=virtualbox
Run Code Online (Sandbox Code Playgroud)

如果minikube start --driver=virtualbox不起作用,则使用minikube start --driver=virtualbox --no-vtx-check.

这个过程解决了我的问题,并且 ingress 在我的 Windows 10 Home Minikube 上运行良好。

在Ubuntu上

最后,Ubuntu 上的 Docker 本质上无缝支持 Minikube Ingress,不会出现任何故障。