【问题标题】:Access a demo service in remote Kubernetes cluster using ingress使用 ingress 访问远程 Kubernetes 集群中的演示服务
【发布时间】:2021-07-14 08:02:02
【问题描述】:

我在 Linux 机器上安装了 minikube,并尝试按照Deploy Hello World App 从外部(我的浏览器)访问演示服务。

$ kubectl get service web
NAME   TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
web    NodePort   10.103.184.174   <none>        8080:30068/TCP   17h
~$ minikube service web --url
http://192.168.49.2:30068

但是当我试图从我的浏览器访问这个网址时,我得到了:

连接超时。 192.168.49.2 的服务器响应时间过长。

我尝试进行端口转发(在 Linux 机器上),但也没有用!

~$ kubectl port-forward svc/web 30068:8080

注意:: 从 linux 机器内部可以 ping 到该 ip,但从外部没有 ping。

我错过了什么?

【问题讨论】:

    标签: minikube nginx-ingress


    【解决方案1】:

    我错过了什么?

    您缺少的是网络知识的基础知识。您的 minikube 很可能在 VM 中运行。该虚拟机分配了一个虚拟网络接口,其 IP 地址只有运行它的提到的 linux 机器知道,网络中的其他设备都不知道它,因此不知道将数据包发送到哪里。连接超时表明数据包在某处被丢弃(很可能在路由器上,但​​在某些情况下防火墙也可能是原因)。

    你能做些什么来解决它?

    尝试使用--driver=none 启动 minikube,这样 minikube 就不会在 vm 中启动,而是直接访问主机的网络接口及其 IP 地址。

    $ minikube start --driver=none
    

    其他解决方案是使用 kubectl 端口转发。您使用它的方式几乎是正确的。你只忘记了一件事:kubectl port-forward 默认绑定在 loopback/localhost。您需要明确告诉它绑定所有接口,以便可以从外部访问它。添加--address=0.0.0.0 应该可以完成工作,但请记住使用 linux 机器的 ip,而不是 minikube 访问网站。

    $ kubectl port-forward svc/web 30068:8080 --address=0.0.0.0
    Forwarding from 0.0.0.0:30068 -> 8080
    

    【讨论】:

    • 感谢您的回答,我删除了我的 minikube 集群并尝试按照您的第一个选项中的建议启动一个新的干净集群,但得到:“由于 GUEST_MISSING_CONNTRACK 而退出:抱歉,Kubernetes 1.20.2 需要 conntrack 才能安装在 root 的路径中”......所以继续测试第二个建议与端口转发(使用 :),现在我得到:“与服务器的连接已重置在页面加载时。”
    • 没有帮助,它在其他浏览器上也不起作用(例如在 chrom 中获取:此页面不起作用, 没有发送任何数据。),在端口转发窗口我可以看到连接拒绝消息:31111 e0420 10:59:36.808959 2861901 portforward.208959 2861901 portforwor.go:400]出错的转发31111 - > 8070:错误转发端口8070到pod1b1f0e703f271d22ae378f71d22ae378f71d22ae378f71d22ae379b7de60170b679b7de10170b679b7de1080b293645d2170b6645d2170b679b71d22861901 uid : 退出状态 1: 2021/04/20 10:59:36 socat[12615] E connect(5, AF=2 127.0.0.1:8070, 16): Connection refused
    • 顺便说一句,我改为 8070 而不是 8080,因为我在那台机器上运行了另一个使用 8080 的 tomcat 应用程序,所以想区分它们。
    • 你能从linux主机访问这个端口吗?如果可以,则很可能是其防火墙,如果不能,则端口未打开
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2019-03-21
    • 2021-06-05
    • 2022-08-13
    • 2018-04-12
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多