Kubernetes 无法访问minikube ip

Kubernetes 无法访问minikube ip,kubernetes,kubectl,minikube,Kubernetes,Kubectl,Minikube,我创建了一个名为fleetman webapp的服务: 另外,一个名为webapp的pod: 我已经检查了minikube ip: 192.168.99.102 但当我在浏览器192.168.99.102:30080中键入时,无法访问webapp: 请注意,我使用的是Ubuntu的最新版本。我还验证了代理和防火墙是否处于活动状态: cat/etc/环境: iptables-L: 我也在Ubuntu中禁用了ufw,但是没有成功,url 192.168.99.102:30080 你能帮我吗?提前谢谢

我创建了一个名为fleetman webapp的服务:

另外,一个名为webapp的pod:

我已经检查了minikube ip:

192.168.99.102

但当我在浏览器192.168.99.102:30080中键入时,无法访问webapp:

请注意,我使用的是Ubuntu的最新版本。我还验证了代理和防火墙是否处于活动状态:

cat/etc/环境:

iptables-L:

我也在Ubuntu中禁用了ufw,但是没有成功,url 192.168.99.102:30080


你能帮我吗?提前谢谢你的回答

有许多不同的虚拟机监控程序可以与minikube一起工作。选择一个将高度依赖于操作系统等变量。其中包括:

虚拟盒 Hyper-V VMware Fusion KVM2 Hyperkit Docker-vm driver=none请参阅引号 官方文件对此进行了讨论:

选择虚拟机监控程序将影响minikube的行为

重点是:

Docker:-vm驱动程序=无 Virtualbox:-vm驱动程序=Virtualbox 码头工人 官方文件总结了这一点:

Minikube还支持-vm driver=none选项,该选项在主机上而不是在vm中运行Kubernetes组件。使用此驱动程序需要一个Linux环境,而不是一个虚拟机监控程序

-

命令$sudo minikube ip的输出将显示主机的ip地址

NodePort的服务对象类型将与\u主机的IP\u地址\u一起提供:NodePort\u端口

以下是命令:$kubectl get nodes-o宽:

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME K8S Ready master 95s v1.17.3 192.168.0.114 Ubuntu 18.04.4 LTS 5.3.0-28-genericdocker://19.3.8 请具体看一下:

内部IP 192.168.0.114 它的IP地址与它正在使用的主机相同。例如,您可以不受任何限制地卷曲豆荚。请考虑阅读包含引用的文章:

警告:无VM驱动程序可能导致安全和数据丢失问题。在使用-vm driver=none之前,请查阅以了解更多信息

您可以使用以下命令检查已公开的内容: $sudo netstat-tulpn

虚拟盒 使用-vm driver=virtualbox创建minikube实例将创建一个以virtualbox作为主机的虚拟机

使用这种-vm驱动程序创建的虚拟机将具有以下2个网络接口:

纳特 仅主机适配器 重要的是,您的minikube实例将可由仅主机适配器访问

仅主机联网。这可用于创建包含主机和一组虚拟机的网络,而无需主机的物理网络接口。相反,在主机上创建一个类似于环回接口的虚拟网络接口,提供虚拟机和主机之间的连接

-

例如:

minikube纯主机适配器的地址为:192.168.99.103 您的纯主机适配器的地址为:192.168.99.1 他们一定不一样

如果您在连接到此适配器时遇到问题,请检查:

如果minikube的纯主机适配器地址在minikube启动成功完成时响应ping。 通过发出以下命令之一,您的网络配置中存在仅限主机的适配器: ip a 命令 仅主机适配器地址在minikube实例子网的范围内 根据我的经验,如果出现问题,重新启动/重新创建此适配器始终有效

命令$sudo minikube ip的输出将显示仅主机适配器的ip地址

以下是命令:$kubectl get nodes-o宽:

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME m01 Ready master 29m v1.17.3 192.168.99.103 Buildroot 2019.02.9 4.19.94docker://19.3.6 请再次详细查看INTERNAL-IP及其关联的IP地址

节点端口的服务对象类型将可用于: 仅主机适配器的IP地址:节点端口端口

我重新创建了附加到它的部署和服务,它在-vm driver=none和-vm driver=virtualbox两种情况下都能工作


如果您对此主题有任何疑问,请告诉我

有许多不同的虚拟机监控程序可以与minikube一起工作。选择一个将高度依赖于操作系统等变量。其中包括:

虚拟盒 Hyper-V VMware Fusion KVM2 Hyperkit Docker-vm driver=none请参阅引号 官方文件对此进行了讨论:

选择虚拟机监控程序将影响minikube的行为

重点是:

Docker:-vm驱动程序=无 Virtualbox:-vm驱动程序=Virtualbox 码头工人 官方文件总结了这一点:

Minikube还支持一个-vm driver=none选项,该选项在上运行Kubernetes组件 主机,而不是虚拟机。使用此驱动程序需要一个Linux环境,而不是一个虚拟机监控程序

-

命令$sudo minikube ip的输出将显示主机的ip地址

NodePort的服务对象类型将与\u主机的IP\u地址\u一起提供:NodePort\u端口

以下是命令:$kubectl get nodes-o宽:

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME K8S Ready master 95s v1.17.3 192.168.0.114 Ubuntu 18.04.4 LTS 5.3.0-28-genericdocker://19.3.8 请具体看一下:

内部IP 192.168.0.114 它的IP地址与它正在使用的主机相同。例如,您可以不受任何限制地卷曲豆荚。请考虑阅读包含引用的文章:

警告:无VM驱动程序可能导致安全和数据丢失问题。在使用-vm driver=none之前,请查阅以了解更多信息

您可以使用以下命令检查已公开的内容: $sudo netstat-tulpn

虚拟盒 使用-vm driver=virtualbox创建minikube实例将创建一个以virtualbox作为主机的虚拟机

使用这种-vm驱动程序创建的虚拟机将具有以下2个网络接口:

纳特 仅主机适配器 重要的是,您的minikube实例将可由仅主机适配器访问

仅主机联网。这可用于创建包含主机和一组虚拟机的网络,而无需主机的物理网络接口。相反,在主机上创建一个类似于环回接口的虚拟网络接口,提供虚拟机和主机之间的连接

-

例如:

minikube纯主机适配器的地址为:192.168.99.103 您的纯主机适配器的地址为:192.168.99.1 他们一定不一样

如果您在连接到此适配器时遇到问题,请检查:

如果minikube的纯主机适配器地址在minikube启动成功完成时响应ping。 通过发出以下命令之一,您的网络配置中存在仅限主机的适配器: ip a 命令 仅主机适配器地址在minikube实例子网的范围内 根据我的经验,如果出现问题,重新启动/重新创建此适配器始终有效

命令$sudo minikube ip的输出将显示仅主机适配器的ip地址

以下是命令:$kubectl get nodes-o宽:

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME m01 Ready master 29m v1.17.3 192.168.99.103 Buildroot 2019.02.9 4.19.94docker://19.3.6 请再次详细查看INTERNAL-IP及其关联的IP地址

节点端口的服务对象类型将可用于: 仅主机适配器的IP地址:节点端口端口

我重新创建了附加到它的部署和服务,它在-vm driver=none和-vm driver=virtualbox两种情况下都能工作


如果您对此主题有任何疑问,请告诉我

即使您通过minikube中的NodePort公开端口30080,minikube仍然不会公开它,因为它将使用自己的外部端口侦听此服务。Minikube隧道将服务暴露于外部世界。要查找暴露的端口,请执行以下操作:

minikube service $SERVICE_NAME
那么,在你的情况下

minikube service fleetman-webapp

即使您正在通过minikube中的NodePort公开端口30080,minikube仍然不会公开它,因为它将使用自己的外部端口来侦听此服务。Minikube隧道将服务暴露于外部世界。要查找暴露的端口,请执行以下操作:

minikube service $SERVICE_NAME
那么,在你的情况下

minikube service fleetman-webapp

对于这门具体且非常好的课程,以下解决方案应该在Windows上开箱即用:只需使用hyper-v驱动程序启动minikube,然后它就会自动将您期望的所有端口映射到您的主机上,如Dawid Kruk在此详细解释的。因此,正确启动minikube所需的只是以下命令:

minikube start --driver=hyperv
请小心指定您给此minikube实例的确切内存量。根据我的经验,hyper-v对您将为其提供多少内存以及可能导致错误的原因有点敏感:

minikube start --driver=hyperv --memory=8192
...
Not enough memory in the system to start the virtual machine minikube.
Could not initialize memory: Not enough memory resources are available to complete this operation. (0x8007000E).
'minikube' failed to start. (Virtual machine ID D4BC7B61-4E4D-4079-94DE-...)
Not enough memory in the system to start the virtual machine minikube with ram size 8192 megabytes. (Virtual machine ID ...)

因此,只需使用上面给出的非特定命令,hyper-v就会计算出它自己真正需要的内存量。

对于这门关于以下解决方案的具体且非常好的课程,应该在Windows上开箱即用:只需使用hyper-v驱动程序启动minikube,然后,它会自动将您期望的所有端口映射到您的主机上,如Dawid Kruk在这里详细解释的那样。因此,正确启动minikube所需的只是以下命令:

minikube start --driver=hyperv
请小心指定您给此minikube实例的确切内存量。根据我的经验,hyper-v对多少有点敏感 您将为其提供的内存,可能导致错误的原因:

minikube start --driver=hyperv --memory=8192
...
Not enough memory in the system to start the virtual machine minikube.
Could not initialize memory: Not enough memory resources are available to complete this operation. (0x8007000E).
'minikube' failed to start. (Virtual machine ID D4BC7B61-4E4D-4079-94DE-...)
Not enough memory in the system to start the virtual machine minikube with ram size 8192 megabytes. (Virtual machine ID ...)

因此,只需使用上面给出的非特定命令,hyper-v就会计算出它自己真正需要多少内存。

据我所知,您缺少一些iptables规则。您是否遵循安装minikube的任何特定指南?我用sudo minikube start-vm driver=none重新创建了您的部署和服务,它可以工作。@DawidKruk,是的,当我将驱动程序从VirtualBox更改为none时,它可以工作。你能解释一下为什么吗?。无论如何,谢谢您,因为您没有指定使用哪个虚拟机监控程序,所以我假设Docker是具有-vm driver=none原因的虚拟机监控程序:iptables。现在我可以看到它是Virtualbox。给我一些时间,我会发布一个有更多解释的答案。@DawidKruk谢谢你的时间,注意我在VM Ubuntu中运行minikube,以前minikube是在virtualbox中启动的;这就像一个嵌套的虚拟机。如果你有一个带有Ubuntu的虚拟机,并且你正在运行另一个带有minikube和-VM driver=virtualbox的虚拟机,那么你需要一些额外的配置才能从主主机访问kubernetes资源。在Ubuntu虚拟机上使用-vm driver=none应该没问题。你可以在我的答案中找到更多的解释。据我所知,你缺少一些iptables规则。您是否遵循安装minikube的任何特定指南?我用sudo minikube start-vm driver=none重新创建了您的部署和服务,它可以工作。@DawidKruk,是的,当我将驱动程序从VirtualBox更改为none时,它可以工作。你能解释一下为什么吗?。无论如何,谢谢您,因为您没有指定使用哪个虚拟机监控程序,所以我假设Docker是具有-vm driver=none原因的虚拟机监控程序:iptables。现在我可以看到它是Virtualbox。给我一些时间,我会发布一个有更多解释的答案。@DawidKruk谢谢你的时间,注意我在VM Ubuntu中运行minikube,以前minikube是在virtualbox中启动的;这就像一个嵌套的虚拟机。如果你有一个带有Ubuntu的虚拟机,并且你正在运行另一个带有minikube和-VM driver=virtualbox的虚拟机,那么你需要一些额外的配置才能从主主机访问kubernetes资源。在Ubuntu虚拟机上使用-vm driver=none应该没问题。你可以在我的答案中找到更多的解释。问题是:尽管我在浏览器中键入了IP\u地址\u主机\u仅\u适配器:节点端口\u端口,但minikube IP无法访问。您能确认我通过命令sudo minikube IP获得了只支持主机的适配器的IP地址吗?因为我以前就是这么做的。正如我所说的,这将取决于您的网络环境的配置。生成minikube环境的主机可以访问仅主机适配器。如果您试图从其他主机访问它,则需要额外的配置。如果您使用-vm driver=virtualbox创建minikube,minikube ip将是minikube的vm的仅主机适配器的地址。问题是:尽管我在浏览器中键入了仅主机适配器的ip地址:NODEPORT,但minikube ip无法访问。您能确认我通过命令sudo minikube IP获得了只支持主机的适配器的IP地址吗?因为我以前就是这么做的。正如我所说的,这将取决于您的网络环境的配置。生成minikube环境的主机可以访问仅主机适配器。如果您试图从其他主机访问它,则需要额外的配置。如果您使用-vm driver=virtualbox创建minikube,那么minikube ip将是minikube的vm的主机专用适配器的地址。