kubernetes - 外部请求通过 Ingress 进入 k8s pod 的具体流程图是什么?
问题描述
全部
我对 k8s 的服务中的 nodePort 和 ClusterIP 类型非常了解。
但是我对 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映射到你的机器上并不是什么神奇的事情!
解决方案
图片的关键部分是Ingress Controller。它是代理的一个实例(可以是 nginx 或 haproxy 或其他入口类型)并在集群内运行。它充当入口点,让您可以添加更复杂的路由规则。它读取与应用程序一起部署并定义路由规则的入口资源。这允许每个应用程序说明 Ingress Controller 需要做什么才能路由到它。
因为控制器在集群内部运行,所以需要对外暴露。您可以通过 NodePort 执行此操作,但如果您使用的是云提供商,则更常见的是使用 LoadBalancer。这为您提供了到达 Ingress 控制器的外部 IP 和端口,您可以将 DNS 条目指向那里。如果您确实将 DNS 指向它,那么您可以选择使用基于 DNS 的路由规则(例如为不同的应用程序使用不同的子域)。
文章“Kubernetes NodePort vs LoadBalancer vs Ingress?我什么时候应该使用什么?有一些很好的解释和图表 - 这是 Ingress 的图表:
推荐阅读
- discord - 我不断收到此错误 [CLIENT_MISSING_INTENTS]:必须提供有效的意图
- arrays - 使用嵌套填充创建二维字符串数组
- azure - 部署时如何发送包含在 Azure DevOps 管道上完成的任务的电子邮件?
- java - 下载一个 Maven 依赖项时出现问题
- android - 使用 Jetpack compose 按钮打开相机
- vue.js - 如何根据从服务器端接收到的数据来改变滑块的图像
- typo3 - Typo3 tx_news eventnews:location_simple 和 Organizer_simple
- python - 如何查看终端的pycharm中使用了哪个venv?
- docker - 在 Docker 中使用文本检查点文件 - 如何修改此文件?
- winforms - 双击标题栏以最大化窗口时触发 Winform MouseMove 事件(左键按下)