我将DEBUG APP
部署到群集中。这将在我的云提供程序中配置负载均衡器(假设为AWS或GCE)。但是,群集中的所有流量都由控制器根据我的入口规则和注释进行路由。
在此控制器前面的云中放置负载平衡器的目的是什么?看来控制器无论如何都在进行实际的负载平衡?
我想了解如何拥有它,以便云负载平衡器实际上将流量路由到群集内的计算机,同时仍然遵循我的所有nginx ingress controller
配置/注释,即使这是可能的/有意义的。
答案 0 :(得分:1)
您可能有一个具有多个主节点的高可用性(HA)群集,负载平衡器是“输入” Kubernetes群集的一种简单而实用的方法,因为您的用户应该可以使用您的应用程序(与集群不同的网络)。 因此,您需要为K8S集群提供一个入口点。
LB是一个易于配置的入口点。
您的API服务器已达到负载平衡。来自群集外部的呼叫将通过LB,并将由API服务器进行管理。只有一个主机(当选的主机)将负责将群集的状态持久保存在etcd数据库中。
在我看来,当拥有ingress controller
和ingress rules
时,在K8S内进行配置和管理比在LB配置文件中写入(并在每次修改时重新加载配置)要容易得多。
我建议您看看https://github.com/kelseyhightower/kubernetes-the-hard-way并在其中进行练习。这是了解流程的好方法。
答案 1 :(得分:0)
Ingress控制器中是一个“控制器”,以kubernetes的术语来说,它是一个软件循环,侦听声明性配置(Ingress资源)和相关“集群状态”的更改,将两者进行比较,然后“使群集的状态与声明性配置一致。
在这种情况下,“集群状态”是以下各项的组合:
因此,当您更新Ingress资源时,控制器会注意到更改,创建新的nginx配置文件,更新并重新启动运行nginx的Pod。
就物理体系结构而言,将事物可视化为群集的“内部”与“外部”或“您的群集”和“云”并不十分准确。客户可见的一切都是抽象。
在GCP中,在客户可见的VM,负载平衡器和托管群集之下有数个数据包和流量管理层。
发往入口的外部流量在进入“您的”集群之前,会先经过Google基础结构中的几个逻辑控制点,而您无法了解这些控制点的详细信息。