【问题标题】:What's the exactly flow chart of an outside request comes into k8s pod via Ingress?外部请求通过 Ingress 进入 k8s pod 的具体流程图是什么?
【发布时间】:2018-12-20 08:36:38
【问题描述】:

全部

  1. 我很了解k8s的nodePort和ClusterIP类型的服务。

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

假设K8s主IP为1.2.3.4,Ingress设置后,可以通过端口(如)连接后端服务(如myservice) 9000)

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

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

【问题讨论】:

    标签: kubernetes kubernetes-ingress


    【解决方案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 的图表:

    【讨论】:

    • @user10814765 Re '不同应用程序的不同子域' - 这通常使用通配符 DNS 完成。 DNS 将有一个规则,以便 *. xxx.com 解析为 1.2.3.4: 9000 或入口控制器可访问的任何位置。 DNS 规则必须首先到位。然后,当入口控制器收到请求时,它可以在其路由逻辑中使用请求中的主机名。另一种选择是不同应用程序的不同域,前提是这些域的​​ DNS 转到入口控制器。
    猜你喜欢
    • 2021-06-07
    • 1970-01-01
    • 2020-05-15
    • 2018-02-26
    • 1970-01-01
    • 2023-02-07
    • 2021-10-30
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多