我正在尝试了解入口控制器在kubernetes中的工作方式。
我已经在裸机k8s集群上部署了nginx入口控制器(称为kind ingress docs) 本地主机现在指向nginx默认页面。
我已经部署了一个带有入口资源且主机为“ foo.localhost”的应用。 我现在可以在foo.localhost上访问我的应用程序。
我想知道nginx是如何做到的而无需对/ etc / hosts文件进行任何修改。
我还希望通过同一/不同网络上的其他计算机访问我的应用。
我为此使用了ngrok
ngrok http foo.localhost
但是它指向nginx默认页面而不是我的应用
如果我不想使用端口转发或kube代理,如何使用ngrok访问它。
答案 0 :(得分:1)
在您的计算机上,localhost
和foo.localhost
都解析为相同的地址127.0.0.1。已经存在了,不是nginx或k8s做的。这就是为什么您不能从另一台计算机访问该名称的原因,因为该名称也解析为该计算机的本地主机,而不是运行您的k8s入口的主机。当您使用ngrok公开它时,它使用另一个名称公开它。当您尝试使用该名称访问入口时,请求包含带有ngrok URL的Host
头,该头与foo.localhost
不同,因此入口认为请求是针对其他域的。
尝试使用ngrok网址在入口处公开本地主机。