微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决无法访问 Minikube(v1.18.1) Ingress on Docker-Driver Windows 10

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

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

系统信息:

Windows 10 家庭版

Minikube(v1.18.1)

Docker(minikube 驱动程序)- Docker 引擎版本 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

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

enter image description here

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

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

这创建了一个可以通过运行以下命令看到的服务:

kubectl get service web 服务截图如下所示:

enter image description here

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

minikube service web

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

enter image description here

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

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

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

kubectl get ingress 屏幕截图如下:

enter image description here

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

enter image description here

有什么问题。请给我一个解决方案?

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

192.168.49.2 hello-world.info

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

在下图中,我对 hello-world.info 执行 ping 操作,该信息将访问 IP 地址 192.168.49.2。这表明 etc\hosts 映射是正确的:

enter image description here

我也 curl 到 minikube ip 和 hello-world.info 并且都超时。见下图:

enter image description here

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: /$1
Events:             <none>

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

一旦您通过必要的更改设置了入口,我想您就在 运行 minikube 的 Windows 的 powershell 正确吗?确保你 “启用插件入口”并有一个单独的控制台运行“minikube” 隧道”也是如此。另外,将主机名和 IP 地址添加到 windows 的 主机表。然后在powershell中输入'minikue ssh',它会给你 命令行。然后你可以'curl myapp.com'然后你应该得到 响应如预期。

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

enter image description here

即使通过curl hello-world.info,我也无法minikube ssh。请帮忙!

解决方法

在 Windows 上

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

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

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

  • 安装VirtualBox
  • 取消选中 Control Panel -> Programs -> Turn Windows Features on and off (under Programs and Features) 中的 Virtual Machine PlatformWindows Hypervisor Platform 选项,然后单击确定。如果出现提示,请重新启动计算机。
  • 现在,在新的 cmd 中执行以下命令
minikube delete
minikube start --driver=virtualbox

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

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

在 Ubuntu 上

最后,Ubuntu 上的 Docker 天生就无缝地支持 Minikube Ingress,没有任何故障。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。