首页 > 解决方案 > 外部请求通过 Ingress 进入 k8s pod 的具体流程图是什么?

问题描述

全部

  1. 我对 k8s 的服务中的 nodePort 和 ClusterIP 类型非常了解。

  2. 但是我对 Ingress 的方式很困惑,因为一个请求怎么会通过这种 Ingress 的方式进入到 k8s 中的一个 pod 中呢?

假设 K8s 的 master IP 是1.2.3.4 ,在 Ingress 设置后,可以通过端口(例如9000)连接到后端服务(例如myservice )

现在,我怎样才能在外面访问这个myservice:9000 ?即,通过1.2.3.4因为1.2.3.4机器上没有入口。

许多文档总是说通过入口 YAML 文件中配置的 'foo.com' 访问它。但这真的很有趣,因为xxx.com肯定需要 DNS,让你新发明任何你喜欢的xxx.com成为一个真正的网站并可以将你的xxx.com映射到你的机器上并不是什么神奇的事情!

标签: kuberneteskubernetes-ingress

解决方案


图片的关键部分是Ingress Controller。它是代理的一个实例(可以是 nginx 或 haproxy 或其他入口类型)并在集群内运行。它充当入口点,让您可以添加更复杂的路由规则。它读取与应用程序一起部署并定义路由规则的入口资源。这允许每个应用程序说明 Ingress Controller 需要做什么才能路由到它。

因为控制器在集群内部运行,所以需要对外暴露。您可以通过 NodePort 执行此操作,但如果您使用的是云提供商,则更常见的是使用 LoadBalancer。这为您提供了到达 Ingress 控制器的外部 IP 和端口,您可以将 DNS 条目指向那里。如果您确实将 DNS 指向它,那么您可以选择使用基于 DNS 的路由规则(例如为不同的应用程序使用不同的子域)。

文章“Kubernetes NodePort vs LoadBalancer vs Ingress?我什么时候应该使用什么?有一些很好的解释和图表 - 这是 Ingress 的图表:

在此处输入图像描述


推荐阅读