全部
我非常了解k8s在服务中的nodePort和ClusterIP类型。
但是我对Ingress方式非常困惑,因为通过这种Ingress方式,请求将如何进入k8s的Pod中?
假设在设置Ingress之后,K8的主IP为 1.2.3.4 ,并且可以使用端口(例如,)连接到后端服务(例如, myservice ) 9000 )
现在,我如何在外面访问此 myservice:9000 ?即通过 1.2.3.4 ?由于 1.2.3.4 计算机上没有进入端口。
许多文档总是说通过入口YAML文件中配置的'foo.com'访问此文件。但这确实很有趣,因为 xxx.com 肯定需要DNS,让您重新发明任何您想成为真正网站的 xxx.com 并不是魔术将您的 xxx.com 映射到您的计算机!
答案 0 :(得分:1)
图片的关键部分是Ingress Controller。它是代理(could be nginx or haproxy or another ingress type)的实例,并且在群集中运行。它充当入口点,使您可以添加更复杂的路由规则。它读取与应用程序一起部署并定义Ingress Resources的routing rules。这样,每个应用程序都可以说出Ingress Controller路由到该应用程序需要做什么。
由于控制器在群集中运行,因此需要将其暴露给外界。您可以通过NodePort进行此操作,但是如果您使用的是云提供商,那么使用LoadBalancer更为常见。这为您提供了一个到达Ingress控制器的外部IP和端口,您可以在其中指向DNS条目。如果确实将DNS指向它,则可以选择使用基于DNS的路由规则(例如为不同的应用程序使用不同的子域)。
文章'Kubernetes NodePort vs LoadBalancer vs Ingress? When should I use what?'有一些很好的解释和图表-这是Ingress的图表: