Nginx入口控制器和云负载均衡器之间是什么关系?

时间:2018-07-22 11:07:07

标签: nginx kubernetes kubernetes-ingress

我将DEBUG APP部署到群集中。这将在我的云提供程序中配置负载均衡器(假设为AWS或GCE)。但是,群集中的所有流量都由控制器根据我的入口规则和注释进行路由。

在此控制器前面的云中放置负载平衡器的目的是什么?看来控制器无论如何都在进行实际的负载平衡?

我想了解如何拥有它,以便云负载平衡器实际上将流量路由到群集内的计算机,同时仍然遵循我的所有nginx ingress controller配置/注释,即使这是可能的/有意义的。

2 个答案:

答案 0 :(得分:1)

您可能有一个具有多个主节点的高可用性(HA)群集,负载平衡器是“输入” Kubernetes群集的一种简单而实用的方法,因为您的用户应该可以使用您的应用程序(与集群不同的网络)。 因此,您需要为K8S集群提供一个入口点。

LB是一个易于配置的入口点。

以这张图片为例: enter image description here

您的API服务器已达到负载平衡。来自群集外部的呼叫将通过LB,并将由API服务器进行管理。只有一个主机(当选的主机)将负责将群集的状态持久保存在etcd数据库中。

在我看来,当拥有ingress controlleringress rules时,在K8S内进行配置和管理比在LB配置文件中写入(并在每次修改时重新加载配置)要容易得多。

我建议您看看https://github.com/kelseyhightower/kubernetes-the-hard-way并在其中进行练习。这是了解流程的好方法。

答案 1 :(得分:0)

Ingress控制器中是一个“控制器”,以kubernetes的术语来说,它是一个软件循环,侦听声明性配置(Ingress资源)和相关“集群状态”的更改,将两者进行比较,然后“使群集的状态与声明性配置一致。

在这种情况下,“集群状态”是以下各项的组合:

  • 由控制器生成的nginx配置文件,供运行nginx的集群中的pod使用。
  • 云提供商的配置,指示提供商的边缘流量基础结构将满足某些条件的某些外部传递的流量传递到群集中的nginx容器。

因此,当您更新Ingress资源时,控制器会注意到更改,创建新的nginx配置文件,更新并重新启动运行nginx的Pod。

就物理体系结构而言,将事物可视化为群集的“内部”与“外部”或“您的群集”和“云”并不十分准确。客户可见的一切都是抽象。

在GCP中,在客户可见的VM,负载平衡器和托管群集之下有数个数据包和流量管理层。

发往入口的外部流量在进入“您的”集群之前,会先经过Google基础结构中的几个逻辑控制点,而您无法了解这些控制点的详细信息。